【发布时间】:2011-06-28 04:44:12
【问题描述】:
如果队列中没有项目,ConcurrentQueue 中的 TryDequeue 将返回 false。
如果队列为空,我需要我的队列等到将新项目添加到队列中并将新项目从队列中取出,然后该过程将继续进行。
我应该在 C# 4.0 中使用 monitor.enter、wait、pulse 还是任何更好的选项
【问题讨论】:
-
hmmm - 让我感到惊讶的是,这并没有方便地公开 - 这似乎是一个常见的用例......
-
我认为使用 4.0 的 BCL 类应该公开这一点,但如果没有其他内容出现,也许看看 at this answer,其中 TryDequeue 将阻塞直到 either 有一个项目 (返回
true)或队列为空并显式关闭(返回false) -
如果队列为空,我需要我的线程等到新项目被添加到队列中并将新项目出列,然后该过程将继续进行。
-
@Marc :添加新项目后,我需要恢复我的线程以退出队列。我怎样才能做到这一点。
-
上面是这样做的,但看起来“Damien_The_Unbeliever”在这里有答案
标签: c# producer-consumer concurrent-queue