두 개의 ManualResetEvent가 있습니다. 두 개의 스레드간에 컨트롤을 앞뒤로 전달하는 데 사용합니다. 근본적으로 코 루틴.WaitHandle.Dispose()를 호출하면 스레드 대기가 어떻게됩니까?
coroutine은 일회용 개체를 보유하기 때문에 (ManualResetEvents는 대기 핸들 임) 일회용을 구현해야합니다. 또한 처리가 끝나면 ManualResetEvent를 처리해야합니다. 그러나 한 번에 하나의 스레드 만 실행되므로 그 중 하나는 항상 핸들 중 하나에서 항상 대기합니다.
두 ManualResetEvents를 모두 처분 할 경우 지정된 동작은 무엇입니까? 대기중인 스레드가 영원히 멈추거나 기다리게 될 것입니까? .Set()을 먼저 호출하면 어떻게 될까요?
이미 스레드를 안전하게 처리 할 수 있다는 것을 알고 있습니다. 문제는 실제로 처분을 수행하는 것입니다. 스레드가 교착 상태가 없음을 보장해야합니다. –
이벤트를 처리하는 방식은 사용되는 동안 다른 플랫폼이나 CPU로드에 따라 예기치 않은 동작을 허용합니다. 그러나 올바른 패턴을 적용하면이 질문을 해결할 수 있습니다. 사용할 수있는 가능성이있는 동안 이벤트를 처리하지 마십시오. – Dewfy