PageRenderTime 13ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 1ms

/mordor/semaphore.h

http://github.com/mozy/mordor
C Header | 45 lines | 34 code | 10 blank | 1 comment | 0 complexity | ef4d9d329166de08e2c64ce059e746cd MD5 | raw file
Possible License(s): BSD-3-Clause
  1. #ifndef __MORDOR_SEMAPHORE_H__
  2. #define __MORDOR_SEMAPHORE_H__
  3. // Copyright (c) 2009 - Mozy, Inc.
  4. #include "version.h"
  5. #include <boost/noncopyable.hpp>
  6. #ifdef WINDOWS
  7. #include <windows.h>
  8. #elif defined(OSX)
  9. #include <mach/semaphore.h>
  10. #elif defined(FREEBSD)
  11. #else
  12. #include <semaphore.h>
  13. #endif
  14. namespace Mordor {
  15. class Semaphore : boost::noncopyable
  16. {
  17. public:
  18. Semaphore(unsigned int count = 0);
  19. ~Semaphore();
  20. void wait();
  21. void notify();
  22. private:
  23. #ifdef WINDOWS
  24. HANDLE m_semaphore;
  25. #elif defined(OSX)
  26. task_t m_task;
  27. semaphore_t m_semaphore;
  28. #elif defined(FREEBSD)
  29. int m_semaphore;
  30. #else
  31. sem_t m_semaphore;
  32. #endif
  33. };
  34. }
  35. #endif