作者QQ29 (我愛阿蓉)
看板C_Sharp
標題[問題] Thread Sync的觀念請教
時間Wed Mar 9 16:00:17 2011
大家好
我目前有遇到一個case是 多個thread會跑到某個scope後 必須一個一個近去做
而我是想使用 AutoResetEvent
我觀念是
他就算多個Thread卡在WaitOne那邊
只要某處Set Event的話 會"隨機" 選 "1" 個 Thread 通過WaitOne那行
以上不知是否觀念有錯
我無法查到是不是只會允許一個通過
還是當某處Set後 會有可能多個通過WaitOne那行....
但這個缺點是
我希望是先Wait的先通過WaitOne那行繼續作
是不是AutoResetEvent又不能達到我目的
所以我現在想改用ManualResetEvent
但問題來了@@
當某處Set Event後
WaitOne那行過了
再執行ResetEvent那行之間
我認為會有多個Thread 有機會 通過WaitOne那行 導致無法達成一次一個Thread
我想了一下
如果用以下方法不知道可不可行
目的是達成 一次一個thread進去 又達到FIFO的順序
lock( MyObject )//Lock我有查書說是用queue去維持FIFO....但我查MSDN沒有查到行為
...
{
MEvent.WaitOne();
}
//Do something.
這樣就能保證 一次一個Thread再Wait 其他Thread都卡在lock
也能保證FIFO..
以上觀念是否有錯
請大家糾正
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
推 horngsh:"Win32 multi-thread" 03/09 17:27
→ ideaup:若在lock{}程式內執行時,不能中斷,作thread更替,會有死結 03/09 18:02
推 tomex:差不多都正確,你講的一些同步類別選擇,當初我也是用它們。 03/09 19:56
→ Anonymoux:"Super multi thread c#" 03/09 20:50