作者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
1F:推 horngsh:"Win32 multi-thread" 03/09 17:27
2F:→ ideaup:若在lock{}程式内执行时,不能中断,作thread更替,会有死结 03/09 18:02
3F:推 tomex:差不多都正确,你讲的一些同步类别选择,当初我也是用它们。 03/09 19:56
4F:→ Anonymoux:"Super multi thread c#" 03/09 20:50