[問題] Thread Sync的觀念請教

看板C_Sharp作者 (我愛阿蓉)時間14年前 (2011/03/09 16:00), 編輯推噓2(202)
留言4則, 4人參與, 最新討論串1/1
大家好 我目前有遇到一個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

03/09 17:27, , 1F
"Win32 multi-thread"
03/09 17:27, 1F

03/09 18:02, , 2F
若在lock{}程式內執行時,不能中斷,作thread更替,會有死結
03/09 18:02, 2F

03/09 19:56, , 3F
差不多都正確,你講的一些同步類別選擇,當初我也是用它們。
03/09 19:56, 3F

03/09 20:50, , 4F
"Super multi thread c#"
03/09 20:50, 4F
文章代碼(AID): #1DTpEJz5 (C_Sharp)