WaitHandle 中 set() reSet() waione關係

 private static ManualResetEvent mre = new ManualResetEvent(false);

main(){

  Thread t = new Thread(ThreadProc);
                t.Name = "Thread_1" ;
                t.Start();

}

ManualResetEvent   對象控制的是mre 這個對象 調用了set()  reSet()   waitone的線程。如果還有一個mre2這個不會相互干擾。

當子線程   Thread_1  調用  waione()   那麼這個線程將會暫停    直到 mre對象在其他線程中被調用Set()。的時候後纔會繼續。

set()方法的意思是好了我給mre一個信號  所有被mre這隻爲waione阻塞暫停的  線程   重新開始運行。


reSet() 的意思是  調用了set()的mre已經把信號置爲了可運行了,所以子線程調用waitone的時候會發現  已經被set信號了,所以會繼續運行,但是調用了reSet()後,這個信號再次被初始化,也就是  子線程調用waitone的時候會再次需要等等mre的信號。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章