00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 //---------------------------------------------------------------------- 00012 //---------------------------------------------------------------------- 00013 #ifndef ICL_CORE_THREAD_MUTEX_IMPL_WIN32_H_INCLUDED 00014 #define ICL_CORE_THREAD_MUTEX_IMPL_WIN32_H_INCLUDED 00015 00016 #include <Windows.h> 00017 00018 #include "icl_core_thread/MutexImpl.h" 00019 00020 namespace icl_core { 00021 namespace thread { 00022 00023 class MutexImplWin32 : public MutexImpl, protected virtual icl_core::Noncopyable 00024 { 00025 public: 00026 MutexImplWin32(); 00027 virtual ~MutexImplWin32(); 00028 00029 virtual bool lock(); 00030 virtual bool lock(const TimeStamp& timeout); 00031 virtual bool lock(const TimeSpan& timeout); 00032 virtual bool tryLock(); 00033 virtual void unlock(); 00034 00035 private: 00036 HANDLE m_mutex; 00037 }; 00038 00039 } 00040 } 00041 00042 #endif