24 #include <core/threading/spinlock.h> 25 #include <core/threading/thread.h> 26 #include <core/exception.h> 32 #if defined(_POSIX_SPIN_LOCKS) && (_POSIX_SPIN_LOCKS - 200112L) >= 0 33 # define USE_POSIX_SPIN_LOCKS 35 # undef USE_POSIX_SPIN_LOCKS 36 # include <core/threading/mutex.h> 63 #ifdef USE_POSIX_SPIN_LOCKS 64 pthread_spinlock_t spinlock;
75 spinlock_data =
new SpinlockData();
76 #ifdef USE_POSIX_SPIN_LOCKS 77 pthread_spin_init(&(spinlock_data->spinlock), PTHREAD_PROCESS_PRIVATE);
84 #ifdef USE_POSIX_SPIN_LOCKS 85 pthread_spin_destroy(&(spinlock_data->spinlock));
99 #ifdef USE_POSIX_SPIN_LOCKS 101 if ( (err = pthread_spin_lock(&(spinlock_data->spinlock))) != 0 ) {
107 locked = spinlock_data->mutex.try_lock();
133 #ifdef USE_POSIX_SPIN_LOCKS 134 if (pthread_spin_trylock(&(spinlock_data->spinlock)) == 0) {
140 return spinlock_data->mutex.try_lock();
149 #ifdef USE_POSIX_SPIN_LOCKS 150 pthread_spin_unlock(&(spinlock_data->spinlock));
152 spinlock_data->mutex.unlock();
Fawkes library namespace.
bool try_lock()
Tries to lock the spinlock.
Base class for exceptions in Fawkes.
void unlock()
Unlock the spinlock.
static Thread * current_thread()
Get the Thread instance of the currently running thread.
void lock()
Lock this spinlock.