2009-12-07 6 views
1

RegisterWaitForSingleObject에 대한 문서는 기본 Win32에서 API는 기본 WT_EXECUTEDEFAULT 플래그를 사용하기 때문에 콜백에 대한 상호 배제를 제공하지 않는 waitObject에 대한 뮤텍스를 사용ThreadPool.RegisterWaitForSingleObject가있는 이벤트를 사용하는 것이 안전합니까?

말한다, 각각의 콜백은 별도의 을 전달됩니다 스레드 풀 스레드 대신 뮤텍스의 , 1

및 최대 카운트 세마포어 를 사용합니다 (WaitHandle이 인수에 대한 설명서)는

뮤텍스보다 WaitHandle이 다른를 사용 말한다

이것은 이벤트를 사용하는 것이 안전하다는 것을 의미하는 것 같습니다.

AutoResetEvent와 ManualResetEvent를 사용하는 데 차이가 있습니까?

답변

2

이벤트가 적절합니다. 나는 오직이 방법으로 이벤트를 사용했습니다 생각

대 수동 리셋 이벤트

다시 자동이는 documentation for the underlying Win32 API는 대기의 끝을 신호 만 개체가 영향을받는 것을 말한다 :

함수 수정을 의 상태는 몇 가지 유형의 동기화 개체입니다. 신호가있는 상태 인 개체 또는 개체가 수정 된 경우에만 함수가 반환됩니다.

수동 재설정 이벤트는 수동으로 설정하지 않으면 상태가 변경되지 않습니다. 자동 리셋 이벤트가 기다림의 원인이되는 경우에만 재설정 될 것으로 기대됩니다. 이 신호는 동시에 두 개의 자동 재설정 이벤트가있는 경우에만 표시됩니다.

2

AutoResetEventManualResetEvent은 여기에서 지정된 사용 사례 인 WaitHandle에서 파생됩니다. 그렇습니다.이 두 클래스를 모두 사용하는 것은 안전합니다 (물론 문서의 가이드 라인 내에서 사용되는 경우).

관련 문제