【发布时间】:2013-09-19 07:00:26
【问题描述】:
我有一个线程正在向队列中添加数据,现在我希望其他线程在添加数据时得到通知,以便它可以开始处理队列中的数据。
一个选项是线程将不断轮询队列以查看计数是否大于零,但我认为这不是好方法,任何其他建议将不胜感激
任何建议我如何实现这一点,我正在使用 .net framework 3.5。
如果我有两个线程,一个在做q.Enqueue(data),另一个在做q.dequeue(),在这种情况下我需要管理锁吗?
【问题讨论】:
-
code.msdn.microsoft.com/windowsdesktop/… 或使用
ManualResetEvent或AutoResetEvent -
是的,您需要为队列加锁。但是第二个线程不知道何时将某些内容添加到队列中。您不想轮询(queue.peek),您可以使用事件来触发第二个线程,您仍然需要锁定队列。看我的例子,这是处理事件(无轮询),并锁定队列。
标签: c# multithreading thread-safety queue