이벤트 PULS 뮤텍스? -----------------------------------------------------------------------------------------

동기화 방법이 여러가지 있는 관계로 당연히 혼용하여 쓸수 있게 된다.

이벤트 오브젝트를 통하면 작업과정은 동일하게 할수 있어도 소비자가 2명이라면 그 2명의 소비자가 동시에 가게에 들어오는 경우가 생길 수가 있다. 그런 과정 자체가 혹은 소비자가 3명일 수도 혹은 4명일수도 있는 것이다.

즉 그 2명의 소비자의 동기화를 위해서 뮤텍스를 사용하는 방식을 보여준다.


unsingned int WINAPI OutPutTAhreadFunction1(LPVOID lpParam) -> 첫번째 쓰레드 함수

unsingned int WINAPI OutPutTAhreadFunction2(LPVOID lpParam) -> 두번째 쓰레드 함수


unsingned int WINAPI OutPutTAhreadFunction1(LPVOID lpParam)

{

WaitForSingleObject(hEvent, INFINITE); -> 메인쓰레드에서 작업하는 내용을 작업해주고 이벤트 동기화를 먼저 해준다음

WaitForSingleObject(hMutex, INFINITE); -> 뮤텍스를 통해서 작업결과물에 2개의 쓰레드가 동시에 접근하는 것을 동기화 시킨다.

코드 내용 전역변수 사용

ReleaseMutex(hMutex)

}

unsingned int WINAPI OutPutTAhreadFunction2(LPVOID lpParam)

{

WaitForSingleObject(hEvent, INFINITE); -> 메인쓰레드에서 작업하는 내용을 작업해주고 이벤트 동기화를 먼저 해준다음

WaitForSingleObject(hMutex, INFINITE); -> 뮤텍스를 통해서 작업결과물에 2개의 쓰레드가 동시에 접근하는 것을 동기화 시킨다.

코드 내용 

ReleaseMutex(hMutex)

}

Posted by JJOREG