00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00034
#if !defined( _THREADS_1__WIN32__MUTEX_SEM_HPP_ )
00035
#define _THREADS_1__WIN32__MUTEX_SEM_HPP_
00036
00037
#define WIN32_LEAN_AND_MEAN
00038
#include <windows.h>
00039
00040
#include <cpp_util_2/h/nocopy.hpp>
00041
00042
namespace threads_1
00043 {
00044
00048
class _os_mutex_sem_t :
00049
public cpp_util_2::nocopy_t
00050 {
00051
private :
00053 HANDLE
m_sem;
00054
00055
public :
00057
inline
00058 _os_mutex_sem_t()
00059 {
00060
m_sem = CreateMutex( 0, FALSE, 0 );
00061 }
00062
inline
00063 ~
_os_mutex_sem_t()
00064 {
00065 CloseHandle( m_sem );
00066 }
00067
00069
inline void
00070 lock()
00071 {
00072 WaitForSingleObject(
m_sem, INFINITE );
00073 }
00074
00076
inline void
00077 release()
00078 {
00079 ReleaseMutex(
m_sem );
00080 }
00081 };
00082
00083 }
00084
00085
#endif