在消费者已经被 take() 阻塞的情况下,生产者的 completeAdding 会唤醒它吗?使用 BlockingCollection。 MSDN上没有说清楚。
最佳答案
没有。
快速实验表明它将在 Take() 方法中抛出 InvalidOperation 异常。
这是有道理的:
int value = data.Take();
当线程/任务只是“唤醒”而没有返回任何数据时,value
会是什么?
如果您被 TryTake(out x)
阻止,添加完成时它将返回 false
。
关于c# - 将 completeAdding 唤醒已经被 take 阻塞的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919013/