일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 홀뎀
- 포커게임
- 맞고게임
- 게임 개발
- 보드게임
- 옥션해킹
- 영어단어게임
- 서치아이
- 카일레라
- 온라인게임
- 상호링크
- 윈윈전략
- MAME
- 고스톱
- 틀린그림 찾기
- 티스토리 초대장
- 카일레라서버
- holdem
- 틀린그림찾기
- 영어단어
- 윈윈
- 게임 외주
- 포커
- 프로그램 외주
- 맞고
- Mame32
- 프로그램 개발
- 옥션소송
- 써치아이
- 판매
- Today
- Total
kyuseo의 게임 프로그래밍
뮤텍스(Mutex, CreateMutex)를 활용한 프로그램 하나만 실행하기 본문
개요.. |
온라인게임이나 메신저 프로그램, 각종 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(); } |