24#include <core/exception.h>
25#include <core/threading/spinlock.h>
26#include <core/threading/thread.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;
74 spinlock_data =
new SpinlockData();
75#ifdef USE_POSIX_SPIN_LOCKS
76 pthread_spin_init(&(spinlock_data->spinlock), PTHREAD_PROCESS_PRIVATE);
83#ifdef USE_POSIX_SPIN_LOCKS
84 pthread_spin_destroy(&(spinlock_data->spinlock));
97#ifdef USE_POSIX_SPIN_LOCKS
99 if ((err = pthread_spin_lock(&(spinlock_data->spinlock))) != 0) {
105 locked = spinlock_data->mutex.try_lock();
130#ifdef USE_POSIX_SPIN_LOCKS
131 if (pthread_spin_trylock(&(spinlock_data->spinlock)) == 0) {
137 return spinlock_data->mutex.try_lock();
145#ifdef USE_POSIX_SPIN_LOCKS
146 pthread_spin_unlock(&(spinlock_data->spinlock));
148 spinlock_data->mutex.unlock();
Base class for exceptions in Fawkes.
bool try_lock()
Tries to lock the spinlock.
void lock()
Lock this spinlock.
void unlock()
Unlock the spinlock.
static Thread * current_thread()
Get the Thread instance of the currently running thread.
Fawkes library namespace.