【发布时间】:2011-06-17 11:42:34
【问题描述】:
我有一个多线程应用程序。
一个线程插入一个队列,许多线程从这个队列中读取。为了正确读取,读取器线程像以下代码一样锁定队列。
我的问题是:当阅读器线程调用以下代码时,inserter线程是否会被阻塞,因为它使用相同的队列?还是继续插入而不中断?
lock ( MsgQueue ) {
if ( MsgQueue.Count == 0 ) {
Monitor.Wait( MsgQueue );
continue;
}
msg = MsgQueue.Dequeue( );
}
【问题讨论】:
-
为了验证您在 cmets 中所说的话,您能否发布一篇关于您如何入队的简短文章?
-
如果你使用.Net 4.0,你可以在这里使用
ConcurrentQueue,见msdn.microsoft.com/en-us/library/dd267265.aspx -
我建议您在 C# 4.0 中使用 BlockingCollection 或使用 AutoRestEvent 排队检查 this at stacoverflow
标签: c# .net multithreading thread-safety