我有兩個ManualResetEvents,我用它來在兩個線程之間來回傳遞控制權。本質上是一個協程。如果我調用WaitHandle.Dispose(),等待線程會發生什麼?
因爲協程持有一次性對象(ManualResetEvents是等待句柄),它應該實現一次性。另外,它應該在處理這些ManualResetEvents時處置它們。但是,由於一次只運行一個線程,其中一個線程幾乎總是等待其中一個句柄。
如果我處置兩個ManualResetEvents,那麼指定的行爲是什麼?等待的線程會永久卡住,還是會處置終止等待?如果我先調用Set(),該怎麼辦?
我已經知道線程可以安全地處理。問題實際上是在執行處置。我需要保證沒有線程死鎖。 – 2009-08-17 15:11:38
當您使用事件時處理事件的方式會在不同平臺或不同負載的CPU上授予不可預知的行爲。但應用正確的模式解決了這個問題 - 不要處置事件,而存在使用它的可能性。 – Dewfy 2009-08-17 15:57:46