17 #include <libkern/OSAtomic.h> 
   18     #define PTHREAD_LOCK_T OSSpinLock 
   19     #define PTHREAD_LOCK_INIT(lock) *lock = OS_SPINLOCK_INIT 
   20     #define PTHREAD_LOCK_DESTROY(lock) 
   21     #define PTHREAD_LOCK(lock) OSSpinLockLock(lock) 
   22     #define PTHREAD_UNLOCK(lock) OSSpinLockUnlock(lock) 
   24     #define PTHREAD_LOCK_T pthread_spinlock_t 
   25     #define PTHREAD_LOCK_INIT(lock) pthread_spin_init(lock, 0) 
   26     #define PTHREAD_LOCK_DESTROY(lock) pthread_spin_destroy(lock) 
   27     #define PTHREAD_LOCK(lock) pthread_spin_lock(lock) 
   28     #define PTHREAD_UNLOCK(lock) pthread_spin_unlock(lock) 
   31     #define PTHREAD_LOCK_T pthread_mutex_t 
   32     #define PTHREAD_LOCK_INIT(lock) pthread_mutex_init(lock, NULL) 
   33     #define PTHREAD_LOCK_DESTROY(lock) pthread_mutex_destroy(lock) 
   34     #define PTHREAD_LOCK(lock) pthread_mutex_lock(lock) 
   35     #define PTHREAD_UNLOCK(lock) pthread_mutex_unlock(lock) 
   44     lock_object=(
void*) SG_MALLOC(PTHREAD_LOCK_T, 1);
 
   45     PTHREAD_LOCK_INIT((PTHREAD_LOCK_T*) lock_object);
 
   52     PTHREAD_LOCK_DESTROY((PTHREAD_LOCK_T*) lock_object);
 
   60     PTHREAD_LOCK((PTHREAD_LOCK_T*) lock_object);
 
   67     PTHREAD_UNLOCK((PTHREAD_LOCK_T*) lock_object);
 
all of classes and functions are contained in the shogun namespace