#include "WrappedSemaphore.h" using namespace bell; WrappedSemaphore::WrappedSemaphore(int count) { semaphoreHandle = dispatch_semaphore_create(0); } WrappedSemaphore::~WrappedSemaphore() { dispatch_release(semaphoreHandle); } int WrappedSemaphore::wait() { return dispatch_semaphore_wait(semaphoreHandle, DISPATCH_TIME_FOREVER); } int WrappedSemaphore::twait(long milliseconds) { dispatch_time_t timeout = dispatch_time(DISPATCH_TIME_NOW, (NSEC_PER_SEC / 1000) * milliseconds); return dispatch_semaphore_wait(semaphoreHandle, timeout); } void WrappedSemaphore::give() { dispatch_semaphore_signal(semaphoreHandle); }