27 #ifndef _RL_UTIL_SEMAPHORE_H_
28 #define _RL_UTIL_SEMAPHORE_H_
35 #include <semaphore.h>
47 semaphore(CreateSemaphore(NULL, n, n, NULL))
53 sem_init(&(*this).semaphore, 0, n);
60 CloseHandle((*this).semaphore);
62 sem_destroy(&(*this).semaphore);
81 WaitForSingleObject((*this).semaphore, INFINITE);
83 sem_wait(&(*this).semaphore);
90 ReleaseSemaphore((*this).semaphore, 1, NULL);
92 sem_post(&(*this).semaphore);
99 return WaitForSingleObject((*this).semaphore, 0) == WAIT_OBJECT_0 ? false :
true;
101 return sem_trywait(&(*this).semaphore) == 0 ? true :
false;
117 #endif // _RL_UTIL_SEMAPHORE_H_