Rea*_*ter 3 c# queue multithreading thread-safety
我有一个线程正在队列中添加数据,现在我希望在添加数据时通知另一线程,以便它可以开始处理队列中的数据。
一种选择是线程将连续轮询队列以查看计数是否大于零,但我认为这不是好方法,任何其他建议将不胜感激
关于如何实现此目标的任何建议,我正在使用.net framework 3.5。
如果我有两个线程在做 q.Enqueue(data)而另一个在做q.dequeue(),那么在这种情况下我需要管理锁吗?
您可以ManualResetEvent用来通知线程。
ManualResetEvent e = new ManualResetEvent(false);
Run Code Online (Sandbox Code Playgroud)
在每次q.enqueue();执行之后e.Set(),在处理线程中,您等待带有e.WaitOne()。
如果您要在循环中进行处理,则应在e.Reset()之后执行e.WaitOne()。
| 归档时间: |
|
| 查看次数: |
2516 次 |
| 最近记录: |