30 #ifndef _RL_UTIL_SEMAPHORE_H_
31 #define _RL_UTIL_SEMAPHORE_H_
36 #include <semaphore.h>
48 semaphore(CreateSemaphore(NULL, n, n, NULL))
54 sem_init(&(*this).semaphore, 0, n);
61 CloseHandle((*this).semaphore);
63 sem_destroy(&(*this).semaphore);
82 WaitForSingleObject((*this).semaphore, INFINITE);
84 sem_wait(&(*this).semaphore);
91 ReleaseSemaphore((*this).semaphore, 1, NULL);
93 sem_post(&(*this).semaphore);
100 return WaitForSingleObject((*this).semaphore, 0) == WAIT_OBJECT_0 ?
false :
true;
102 return sem_trywait(&(*this).semaphore) == 0 ?
true :
false;
118 #endif // _RL_UTIL_SEMAPHORE_H_