00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 //---------------------------------------------------------------------- 00012 //---------------------------------------------------------------------- 00013 #ifndef ICL_CORE_LOGGING_SEMAPHORE_IMPL_DARWIN_H_INCLUDED 00014 #define ICL_CORE_LOGGING_SEMAPHORE_IMPL_DARWIN_H_INCLUDED 00015 00016 #include <mach/semaphore.h> 00017 00018 #include <icl_core/BaseTypes.h> 00019 00020 #include "SemaphoreImpl.h" 00021 00022 namespace icl_core { 00023 namespace logging { 00024 00025 class SemaphoreImplDarwin : public SemaphoreImpl, protected virtual icl_core::Noncopyable 00026 { 00027 public: 00028 SemaphoreImplDarwin(size_t initial_value); 00029 virtual ~SemaphoreImplDarwin(); 00030 00031 virtual void post(); 00032 virtual bool wait(); 00033 00034 private: 00035 semaphore_t m_semaphore; 00036 }; 00037 00038 } 00039 } 00040 00041 #endif