2010-06-22 4 views
1

WaitHandle.WaitOne()에는 다른 리소스를 보유하기 전에 리소스 잠금을 일시적으로 해제 할 수있는 ExitContext 옵션이 있습니다. 데드락 또는 스레드 부족이 발생할 수있는 경우에 유용합니다..Net에서 비 기본 실행 컨텍스트를 구성하는 시나리오는 무엇입니까?

msdn documentaiton은 dondefault 컨텍스트에 대해 설명합니다. ContexBoundObject와 관련된 기본이 아닌 컨텍스트를 구성하는 예제 만 참조하십시오 (Related Qusetion).

Monitor.Enter(), Lock {} 문과 같은 다른 동기화 옵션도 기본이 아닌 컨텍스트를 구성합니까? 다른 어떤 시나리오가 기본이 아닌 컨텍스트에서 스레드 실행을 배치합니까?

답변

1

까다로운 주제이므로 충분히 알지 못합니다. Remoting 시나리오와 관련이 있다는 것을 알고 있습니다. True를 전달하면 대기가 해결 될 때까지 통신 차단을 피하고 다른 메시지를 전달할 수 있습니다. 예, 교착 상태는 피하지만 동기화 문제가 발생할 수 있습니다.

WaitOne()에 대한이 인수로 인해 .NET 2.0 SP1의 호환성이 크게 바뀌어 혼란스럽고 FUD가 발생했습니다. 그들은 exitContext 인수의 적절한 값을 추측 할 필요가 없도록 WaitOne (int) 및 WaitOne (TimeSpan) 오버로드를 추가했습니다. 어느 것이 정상적으로 거짓이어야합니다.

관련 문제