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;
95static OnceFlag g_once = BLOCXX_ONCE_INIT;
96static void initGuard()
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)
void AtomicDec(Atomic_t &v)
int AtomicGet(Atomic_t const &v)