123456789101112131415161718192021222324252627282930313233 |
- #include "WrappedSemaphore.h"
- using namespace bell;
- WrappedSemaphore::WrappedSemaphore(int count)
- {
- sem_init(&this->semaphoreHandle, 0, 0); // eek pointer
- }
- WrappedSemaphore::~WrappedSemaphore()
- {
- sem_destroy(&this->semaphoreHandle);
- }
- int WrappedSemaphore::wait()
- {
- sem_wait(&this->semaphoreHandle);
- return 0;
- }
- int WrappedSemaphore::twait(long milliseconds)
- {
- // wait on semaphore with timeout
- struct timespec ts;
- clock_gettime(CLOCK_REALTIME, &ts);
- ts.tv_nsec += (milliseconds % 1000) * 1000000;
- return sem_timedwait(&this->semaphoreHandle, &ts);
- }
- void WrappedSemaphore::give()
- {
- sem_post(&this->semaphoreHandle);
- }
|