国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[轉]AutoResetEvent 與 ManualResetEvent區別

2019-11-17 03:19:41
字體:
來源:轉載
供稿:網友

[轉]AutoResetEvent 與 ManualResetEvent區別

在C#多線程編程中,這兩個類幾乎是不可或缺的,他們的用法/聲明都很類似,那么區別在哪里了?

Set方法將信號置為發送狀態 Reset方法將信號置為不發送狀態 WaitOne等待信號的發送

其實,從名字就可以看出一點端倪 ,一個手動,一個自動,這個手動和自動實際指的是在Reset方法的處理上,如下面例子

public AutoResetEvent autoevent=new AutoResetEvent(true);

public ManualResetEvent manualevent=new ManualResetEvent(true);

默認信號都處于發送狀態,

autoevent.WaitOne();

manualevent.WaitOne();

如果 某個線程調用上面該方法,則當信號處于發送狀態時,該線程會得到信號,得以繼續執行

差別就在調用后,autoevent.WaitOne()每次只允許一個線程進入,當某個線程得到信號(也就是有其他線程調用

了autoevent.Set()方法后)后,autoevent會自動又將信號置為不發送狀態,則其他調用WaitOne的線程只有繼續等待.也就是說,autoevent一次只喚醒一個線程

而manualevent則可以喚醒多個線程,因為當某個線程調用了set方法后,其他調用waitone的線程獲得信號得以繼續執行,而manualevent不會自動將信號置為不發送.也就是說,除非手工調用了manualevent.Reset().方法,則

manualevent將一直保持有信號狀態,manualevent也就可以同時喚醒多個線程繼續執行


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巩留县| 广东省| 温泉县| 邢台县| 宜良县| 凉山| 志丹县| 上虞市| 始兴县| 巴里| 克拉玛依市| 祥云县| 灵石县| 古田县| 广灵县| 夏津县| 聂拉木县| 明光市| 无极县| 白沙| 合水县| 黎城县| 洪洞县| 丹棱县| 岢岚县| 宣汉县| 桃园县| 松原市| 陈巴尔虎旗| 吉首市| 会理县| 巴林左旗| 赤城县| 长子县| 海安县| 彰化市| 南乐县| 苏尼特右旗| 宜章县| 越西县| 徐闻县|