뮤텍스, 이벤트, 세마포어등등으로 프로세스간 동기화가 가능하다
다음 예제는 뮤텍스를 이용하여 먼저 실행된 프로세스가 종료되기를 3초간 대기 후 결과를 메세지박스로 보여준다.
HANDLE m_hMutex = CreateMutex(NULL, TRUE, "MTXTEST");
if (GetLastError() == ERROR_ALREADY_EXISTS){
DWORD dwRet = WaitForSingleObject(m_hMutex, 3000);
//error, 뮤텍스를 최초 생성한 프로세스가 해제(신호상태로 만듦)할 수 있다.
//BOOL bRet = ReleaseMutex(m_hMutex);
CloseHandle(m_hMutex);
if (dwRet == WAIT_FAILED){
DWORD dwErr = GetLastError();
MessageBox(NULL, "mtx err", "", MB_OK);
return;
}
if (dwRet == WAIT_TIMEOUT){
MessageBox(NULL, "mtx timeout", "", MB_OK);
return;
}
MessageBox(NULL, "mtx terminated", "", MB_OK);
}else{
MessageBox(NULL, "mtx first running", "", MB_OK);
ReleaseMutex(m_hMutex);
CloseHandle(m_hMutex);
}
'library > WIN32API' 카테고리의 다른 글
Win32 과연 어떤 Timer함수를 사용할 것인가? (0) | 2010.12.14 |
---|---|
MBCS 프로젝트 유니코드 전환 가이드 (0) | 2010.11.24 |
dll LoadLibrary/FreeLibrary (0) | 2010.10.01 |
IOCP (0) | 2010.07.08 |
DLL내에서 윈도우 생성 시 thread, hInstance, GetModuleHandle (0) | 2009.12.31 |