CreateEvent
예를들어, Test001 이라는 이벤트 객체를 생성하고 이 객체에
이벤트가 발생하는지 5초간 대기하면서 체크하려면 아래와 같이 코드를 구성하면된다.
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName);
BOOL bInitialState,
LPCTSTR lpName);
예를들어, Test001 이라는 이벤트 객체를 생성하고 이 객체에
이벤트가 발생하는지 5초간 대기하면서 체크하려면 아래와 같이 코드를 구성하면된다.
HANDLE h_my_event = CreateEvent(NULL, TRUE, FALSE, "Test001");
if(h_my_event != NULL)
{
DWORD state = WaitForSingleObject(h_my_event, 5000);
if(state == WAIT_TIMEOUT) ...; // 5초간 이벤트가 발생하지 않은 경우
else if(state == WAIT_OBJECT_0) ...; // 이벤트가 발생한 경우
if(h_my_event != NULL)
{
DWORD state = WaitForSingleObject(h_my_event, 5000);
if(state == WAIT_TIMEOUT) ...; // 5초간 이벤트가 발생하지 않은 경우
else if(state == WAIT_OBJECT_0) ...; // 이벤트가 발생한 경우
// ...( 생략 )...
CloseHandle(h_my_event);
}
CreateEvent 함수를 이용하여 이벤트 객체를 생성한 프로세스 또는 해당 프로세스가 생성한
추가적인 스레드는 WaitForSingleObject 같은 함수를 이용하여 해당 이벤트 객체에 이벤트가
발생하는지를 체크할수 있다.
}
CreateEvent 함수를 이용하여 이벤트 객체를 생성한 프로세스 또는 해당 프로세스가 생성한
추가적인 스레드는 WaitForSingleObject 같은 함수를 이용하여 해당 이벤트 객체에 이벤트가
발생하는지를 체크할수 있다.
#include#include using namespace std; HANDLE hEvent; DWORD WINAPI MainLoop(LPVOID iValue) { int iFinish = 10; for ( int i=0; i< iFinish; i++) cout << i << endl; // Loop End SetEvent( hEvent) ; return 0; } void main() { DWORD dwId; HANDLE hThread = CreateThread( NULL, 0, MainLoop, NULL, 0, &dwId); if ( hThread == NULL) { DWORD dwError = GetLastError(); cout << "Error in Create Thread :" << dwError << endl; return; } cout << "Create Thread !" << endl; hEvent = CreateEvent( NULL, FALSE, FALSE, "Test") ; cout << "Started waiting for the thread to complete." << endl; WaitForSingleObject( hEvent, 100 ); cout << "Thread Completed." << endl; if ( hEvent != INVALID_HANDLE_VALUE ) CloseHandle(hEvent); int val; cin >> val; }
::WaitForSingleObject() 지정한 오브젝트가 시그널(신호) 상태가 되거나 타임아웃이 되면 제어를 돌려준다.
::SetEvent(hAAA); //시그널(신호) 상태가 되게 한다
[To properly terminate threads]
Create an event object using the CreateEvent function.
Create the threads.
Each thread monitors the event state by calling the WaitForSingleObject function.
Each thread ends its own execution when the event is set to the signaled state
( WaitForSingleObject returns WAIT_OBJECT_0). '온라인게임' 카테고리의 다른 글
SQL 명령어 (0) | 2010.11.10 |
---|---|
Microsoft SQL Server (0) | 2010.11.10 |
map - stl에서 제공하는 자료형중 하나 (0) | 2010.11.08 |
warning C4819 (0) | 2010.11.05 |
윈도우 Console 실행 (0) | 2010.11.05 |