일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 초보
- 셋업
- Visual Basic
- 입문
- MFC
- 델파이
- 기초
- Firebird
- Visual Studio 2005
- SQL
- 인스톨
- PostgreSQL
- dll
- MySQL
- 설치
- 소니
- c#
- Delphi
- WIN32 SDK
- 데이터베이스
- 파이어버드
- xml
- VB.NET
- winsock
- vb
- 파라미터
- 예제
- SDK
- 시리얼 통신
- 문자열
- 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용 예제 파일
프로그램을 빌드해서 실행하면 처리시작이 표시되는 프로그램은 항상 세개이다.