📄 win32condition.cpp
字号:
//// This file is part of the "More for C++" library//// Copyright (c) 1999-2003 by Thorsten Goertz (thorsten@morefor.org)//// The "More for C++" library is free software; you can redistribute it and/or// modify it under the terms of the license that comes with this package.//// Read "license.txt" for more details.//// THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES// OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.////////////////////////////////////////////////////////////////////////////////#ifndef _WIN32#define _WIN32#endif#include <windows.h>#include "win32condition.hpp"using namespace more::os::win32;////////////////////////////////////////////////////////////////////////////////Win32Condition::Win32Condition( ){ InitializeCriticalSection( &m_criticalSection ); m_hEvent = CreateEvent( 0, TRUE, FALSE, 0 );}////////////////////////////////////////////////////////////////////////////////void Win32Condition::finalize( ){ CloseHandle( m_hEvent ); DeleteCriticalSection( &m_criticalSection );}////////////////////////////////////////////////////////////////////////////////void Win32Condition::acquire( ){ EnterCriticalSection( &m_criticalSection );}////////////////////////////////////////////////////////////////////////////////void Win32Condition::release( ){ LeaveCriticalSection( &m_criticalSection );}////////////////////////////////////////////////////////////////////////////////void Win32Condition::wait( ){ wait( INFINITE );}////////////////////////////////////////////////////////////////////////////////void Win32Condition::wait( size_t nMillisecondsToWait) throw( Condition::TimeOut ){ DWORD nResult; LeaveCriticalSection( &m_criticalSection ); nResult = WaitForSingleObject( m_hEvent, nMillisecondsToWait ); EnterCriticalSection( &m_criticalSection ); ResetEvent( m_hEvent ); if( nResult == WAIT_TIMEOUT ) { throw Condition::TimeOut( ); }}////////////////////////////////////////////////////////////////////////////////void Win32Condition::notify( ){ SetEvent( m_hEvent );}////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -