WrappedSemaphore.cpp 666 B

123456789101112131415161718192021222324252627282930313233
  1. #include "WrappedSemaphore.h"
  2. using namespace bell;
  3. WrappedSemaphore::WrappedSemaphore(int count)
  4. {
  5. sem_init(&this->semaphoreHandle, 0, 0); // eek pointer
  6. }
  7. WrappedSemaphore::~WrappedSemaphore()
  8. {
  9. sem_destroy(&this->semaphoreHandle);
  10. }
  11. int WrappedSemaphore::wait()
  12. {
  13. sem_wait(&this->semaphoreHandle);
  14. return 0;
  15. }
  16. int WrappedSemaphore::twait(long milliseconds)
  17. {
  18. // wait on semaphore with timeout
  19. struct timespec ts;
  20. clock_gettime(CLOCK_REALTIME, &ts);
  21. ts.tv_nsec += (milliseconds % 1000) * 1000000;
  22. return sem_timedwait(&this->semaphoreHandle, &ts);
  23. }
  24. void WrappedSemaphore::give()
  25. {
  26. sem_post(&this->semaphoreHandle);
  27. }