看板 C_Sharp 關於我們 聯絡資訊
大家好 我目前有遇到一個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