38 #include "blocxx/BLOCXX_config.h"
41 #if defined(BLOCXX_USE_PTHREAD_SPIN_LOCK_ATOMIC_OPS)
43 namespace BLOCXX_NAMESPACE
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)
88 namespace BLOCXX_NAMESPACE
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);