/* ------------------------------- ** ** Atomic lock for PTHREADS ** ** ------------------------------- */ #define INIT_LOCK(LOCK_VAR) pthread_mutex_init(&(LOCK_VAR), NULL) #define DESTROY_LOCK(LOCK_VAR) pthread_mutex_destroy(&(LOCK_VAR)) #define TRY_LOCK(LOCK_PTR) pthread_mutex_trylock(&(LOCK_VAR)) #define LOCK(LOCK_VAR) pthread_mutex_lock(&(LOCK_VAR)) #define UNLOCK(LOCK_VAR) pthread_mutex_unlock(&(LOCK_VAR)) #define INIT_RWLOCK(X) pthread_rwlock_init(&(X), NULL) #define DESTROY_RWLOCK(X) pthread_rwlock_destroy(&(X)) #define READ_LOCK(X) pthread_rwlock_rdlock(&(X)) #define READ_UNLOCK(X) pthread_rwlock_unlock(&(X)) #define WRITE_LOCK(X) pthread_rwlock_wrlock(&(X)) #define WRITE_UNLOCK(X) pthread_rwlock_unlock(&(X))