본문 바로가기
C & C++/C & C++

[뮤텍스] Mutex 하나의 프로그램만 실행

by izen8 2011. 3. 27.
반응형

온라인게임이나 메신저 프로그램, 각종 P2P 프로그램들은 프로그램 하나만 실행이 됩니다.

이와 같이 하나의 프로그램만 실행 시키는 방법은 뮤텍스(Mutex)라는 동기화 객체를 사용하는데 그 객체의 사용법을 알아봅니다.


코드

 

1. APP 헤더에 선언한다.

 

class Cmfc_dlg2App : public CWinApp

{

    HANDLE m_hMutex;

 

 

2. 생성자에서 초기화한다.

 

Cmfc_dlg2App::Cmfc_dlg2App()

{

    m_hMutex = NULL;

}

 

 

3. InitInstance 에서 뮤텍스를 생성한다.

 

BOOL Cmfc_dlg2App::InitInstance()

{    

    HANDLE m_hMutex = CreateMutex(NULL,TRUE, "뮤텍스를이용한한번만실행되는윈도우");

    if( GetLastError() == ERROR_ALREADY_EXISTS )

    {

        AfxMessageBox( "이미프로그램이실행되고있습니다" );

        return FALSE;

    }

 

 

4. ExitInstance 에서 생성된 뮤텍스를 제거한다.

 

int Cmfc_dlg2App::ExitInstance()

{

    if( m_hMutex != NULL )

        CloseHandle( m_hMutex );

 

    return CWinApp::ExitInstance();

}

반응형

댓글