38 #include "blocxx/BLOCXX_config.h" 41 #if defined(BLOCXX_USE_PTHREAD_SPIN_LOCK_ATOMIC_OPS) 49 pthread_spin_init(&spinlock, 0);
51 Atomic_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) 94 static Mutex* guard = 0;
95 static OnceFlag g_once = BLOCXX_ONCE_INIT;
96 static void initGuard()
103 MutexLock lock(*guard);
109 MutexLock lock(*guard);
115 MutexLock lock(*guard);
121 MutexLock lock(*guard);
int AtomicGet(Atomic_t const &v)
bool AtomicDecAndTest(Atomic_t &v)
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 ...
void AtomicDec(Atomic_t &v)
void AtomicInc(Atomic_t &v)