37 sem = CreateSemaphore(
NULL, 1, 1,
NULL);
44 sem_init(&sem,1,
value);
55 if (sem) CloseHandle(sem);
62 return(sem_wait((sem_t *)&sem));
67 DWORD dwWaitResult = WaitForSingleObject(sem, INFINITE);
68 switch (dwWaitResult) {
83 return(sem_post((sem_t *)&sem));
87 if (!ReleaseSemaphore(sem, 1 ,
NULL))
96 return(sem_trywait((sem_t *)&sem));
100 DWORD dwWaitResult = WaitForSingleObject(sem, 0L);
101 switch (dwWaitResult) {
116 return(sem_getvalue((sem_t *)&sem,sval));
121 if (!ReleaseSemaphore(sem, 0, &prev))
132 return(sem_destroy(&sem));
134 return CloseHandle(sem);
sint32 GetValue(int *sval) const
sint32 TryWait(void) const