38#include "blocxx/BLOCXX_config.h"
41#if defined(BLOCXX_USE_PTHREAD_SPIN_LOCK_ATOMIC_OPS)
49 pthread_spin_init(&spinlock, 0);
51Atomic_t::Atomic_t(
int i)
54 pthread_spin_init(&spinlock, 0);
58 pthread_spin_lock(&v.spinlock);
60 pthread_spin_unlock(&v.spinlock);
64 pthread_spin_lock(&v.spinlock);
66 bool b = ((v.
val == 0) ?
true :
false) ;
67 pthread_spin_unlock(&v.spinlock);
76 pthread_spin_lock(&v.spinlock);
78 pthread_spin_unlock(&v.spinlock);
83#elif defined(BLOCXX_USE_BLOCXX_DEFAULT_ATOMIC_OPS)
94static Mutex*
guard = 0;
103 MutexLock lock(*
guard);
109 MutexLock lock(*
guard);
115 MutexLock lock(*
guard);
121 MutexLock lock(*
guard);
void BLOCXX_COMMON_API callOnce(OnceFlag &flag, FuncT F)
The first time callOnce is called with a given onceFlag argument, it calls func with no argument and ...
bool AtomicDecAndTest(Atomic_t &v)
void AtomicInc(Atomic_t &v)
bool operator==(const Array< T > &x, const Array< T > &y)
void AtomicDec(Atomic_t &v)
int AtomicGet(Atomic_t const &v)