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
00051
class _os_mutex_sem_t :
00052
public cpp_util_2::nocopy_t
00053 {
00054
private :
00056 CRITICAL_SECTION
m_sem;
00057
00058
public :
00060
inline
00061 _os_mutex_sem_t()
00062 {
00063 InitializeCriticalSection( &
m_sem );
00064 }
00065
inline
00066 ~
_os_mutex_sem_t()
00067 {
00068 DeleteCriticalSection( &m_sem );
00069 }
00070
00072
inline void
00073 lock()
00074 {
00075 EnterCriticalSection( &
m_sem );
00076 }
00077
00079
inline void
00080 release()
00081 {
00082 LeaveCriticalSection( &
m_sem );
00083 }
00084 };
00085
00086 }
00087
00088
#endif