123456789101112131415161718192021222324252627282930313233 |
- #include "WrappedSemaphore.h"
- #include <sys/time.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;
- struct timeval tv;
- gettimeofday(&tv, 0);
- ts.tv_sec = tv.tv_sec + milliseconds / 1000;
- ts.tv_nsec = tv.tv_usec * 1000 + (milliseconds % 1000) * 1000000;
- return sem_timedwait(&this->semaphoreHandle, &ts);
- }
- void WrappedSemaphore::give() {
- sem_post(&this->semaphoreHandle);
- }
|