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

블로그 이미지

란마12

,