프로그래밍 노트

어떤 어플리케이션을 한번에 3개까지만 실행 하게하기(WaitForSingleObject) 본문

Win32 SDK 초보

어떤 어플리케이션을 한번에 3개까지만 실행 하게하기(WaitForSingleObject)

띠리 2007. 8. 30. 11:51
CreateSemaphoreWaitForSingleObject을 이용하여
어떤 어플리케이션을 한번에 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용 예제 파일



프로그램을 빌드해서 실행하면 처리시작이 표시되는 프로그램은 항상 세개이다.
Comments