일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- WIN32 SDK
- 문자열
- 예제
- c#
- 델파이
- 기초
- 셋업
- 초보
- 설치
- 파라미터
- 데이터베이스
- 입문
- 시리얼 통신
- 인스톨
- MFC
- winsock
- MySQL
- VB.NET
- Visual Studio 2005
- SQL
- xml
- vb
- PostgreSQL
- Delphi
- Visual Basic
- 파이어버드
- dll
- 소니
- SDK
- Firebird
- Today
- Total
프로그래밍 노트
어떤 어플리케이션을 한번에 3개까지만 실행 하게하기(WaitForSingleObject) 본문
어떤 어플리케이션을 한번에 3개까지만 실행 하게하기
#include <stdio.h>
#include <windows.h>
#define SEMAPHORE_NAME "Semaphore Sample"
// 어플리케이션을 한번에 3개까지만 실행 하게
int main()
{
HANDLE hSemaphore;
DWORD dwResult;
// 세마포어 만들기
hSemaphore = CreateSemaphore(NULL, 3, 3, (LPCSTR)SEMAPHORE_NAME);
// 지정한 오브젝트가 시그널 상태가 되
dwResult = WaitForSingleObject(hSemaphore, // 세마포어 오브젝트 핸들
0); // 타임아웃시간
// 만들어진 세마포어 확인
if(dwResult != WAIT_OBJECT_0) {
printf("벌써 3개 실행됬어 %d\n", dwResult);
Sleep(1000);
} else {
// 처리
printf("처리시작 %d\n", dwResult);
Sleep(10000);
printf("처리종료 %d\n", dwResult);
// 개방
ReleaseSemaphore(hSemaphore, 1, NULL);
}
CloseHandle(hSemaphore);
return(0);
}
vs2005용 예제 파일
프로그램을 빌드해서 실행하면 처리시작이 표시되는 프로그램은 항상 세개이다.