프로세스간 동기화 테스트
뮤텍스, 이벤트, 세마포어등등으로 프로세스간 동기화가 가능하다
다음 예제는 뮤텍스를 이용하여 먼저 실행된 프로세스가 종료되기를 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);
}