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的信号。

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