在队列中添加数据时通知线程

Rea*_*ter 3 c# queue multithreading thread-safety

我有一个线程正在队列中添加数据,现在我希望在添加数据时通知另一线程,以便它可以开始处理队列中的数据。

一种选择是线程将连续轮询队列以查看计数是否大于零,但我认为这不是好方法,任何其他建议将不胜感激

关于如何实现此目标的任何建议,我正在使用.net framework 3.5。

如果我有两个线程在做 q.Enqueue(data)而另一个在做q.dequeue(),那么在这种情况下我需要管理锁吗?

Meh*_*ban 5

您可以ManualResetEvent用来通知线程。

ManualResetEvent e = new ManualResetEvent(false);
Run Code Online (Sandbox Code Playgroud)

在每次q.enqueue();执行之后e.Set(),在处理线程中,您等待带有e.WaitOne()

如果您要在循环中进行处理,则应在e.Reset()之后执行e.WaitOne()