28 #ifndef __WINH_OBJ_H__ 29 #define __WINH_OBJ_H__ 31 #include <boost/thread/locks.hpp> 35 class critical_region;
37 class critical_section {
39 boost::mutex m_section;
44 InitializeCriticalSection( &m_section );
48 InitializeCriticalSection( &m_section );
52 DeleteCriticalSection( &m_section );
56 EnterCriticalSection( &m_section );
60 LeaveCriticalSection( &m_section );
64 return TryEnterCriticalSection( &m_section )?
true:
false;
100 ::InitializeSRWLock(&m_srw_lock);
107 AcquireSRWLockShared(&m_srw_lock);
112 ReleaseSRWLockShared(&m_srw_lock);
117 ::AcquireSRWLockExclusive(&m_srw_lock);
122 ::ReleaseSRWLockExclusive(&m_srw_lock);
172 m_hevent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
176 ::CloseHandle(m_hevent);
182 return ::SetEvent(m_hevent) ?
true:
false;
187 return ::ResetEvent(m_hevent) ?
true:
false;
200 #define SHARED_CRITICAL_REGION_BEGIN(x) { shared_guard critical_region_var(x) 201 #define EXCLUSIVE_CRITICAL_REGION_BEGIN(x) { exclusive_guard critical_region_var(x) 205 #define CRITICAL_REGION_LOCAL(x) critical_region critical_region_var(x) 206 #define CRITICAL_REGION_BEGIN(x) { critical_region critical_region_var(x) 207 #define CRITICAL_REGION_END() } 214 case WAIT_ABANDONED:
return "WAIT_ABANDONED";
215 case WAIT_TIMEOUT:
return "WAIT_TIMEOUT";
216 case WAIT_OBJECT_0:
return "WAIT_OBJECT_0";
217 case WAIT_OBJECT_0+1:
return "WAIT_OBJECT_1";
218 case WAIT_OBJECT_0+2:
return "WAIT_OBJECT_2";
220 return "UNKNOWN CODE";
exclusive_guard(shared_critical_section &ref_sec)
critical_section & operator=(const critical_section §ion)
~shared_critical_section()
const char * get_wait_for_result_as_text(DWORD res)
shared_guard(shared_critical_section &ref_sec)
critical_region(critical_section &cs)
shared_critical_section()
critical_section(const critical_section §ion)