재가 공부하는 책에는
뮤텍스나 세마포어 같은 동기화는 "메모리 접근"동기화이고
이벤트기반의 동기화는 "실행순서"의 동기화로 이는 "메모리 접근"동기화의 개념까지 포함하고 있다고 하는데요
저는 동기화에 대해서
생성,소멸,소유,반환 이렇게 4가지를 큰 틀로 잡고 이해하고 있거든요?
일단 뮤텍스를 보자면
생산:CreateMutex
소멸:CloseHandle
소유:WaitForsingleObject
반환:ReleaseMutex
그리고 이벤트 오브젝트는
생산 : CreateEvent
소멸:CloseHandle
소유:SetEvent
반환:WaitForsingleObject, ResetMutex
이런식으로써
제일 큰차이는
뮤텍스는 WaitForSingleObject를 통해서만 함수를 호출한 thread가 임계영역에 접근하고
이벤트 오브젝트는 SetEvent와 ResetMuex함수로 특정 thread의 임계영역으로 접근 및 반환 시키는 타이밍을 다른 쓰레드에서 마음대로 결정 할 수있다.
쉽게 요약하자면 "특정 쓰레드의 임계영역으로의 접근을 다른 쓰레드가 직접적으로 관리 할수 있느냐 없느냐의 차이"가 되는듯한데요
재가 생각한게 event와 mutex의 차이점이 맞는건지...??
재 나름대로 정리해도 영 복잡하네요 ㅠㅠ