Win32 (Windows NT and Windows 95) Semaphore Class Implementation

class Semaphore { private: HANDLE semaphore; public: Semaphore(void) { CreateSemaphore((void *)0, 0, 0x7ffffff, (void*)0) } Semaphore(int available) { CreateSemaphore((void *)0, available, 0x7ffffff, (void*)0) } ~Semaphore(void) { CloseHandle(semaphore); } void Wait(void) { WaitForSingleObject(semaphore, INFINITE); } void Post(void) { ReleaseSemaphore(semaphore, 1, (void*)0); } void Post(int how_many) { ReleaseSemaphore(semaphore, how_many, (void*)0); } };