2016-12-01 101 views
4

据我所知,一个BlockingCollection使用非忙等待,这是一个新的项目/回调通知。所以我不明白它是如何阻塞,但我认为我可能混合阻塞的线程和阻止访问共享对象?BlockingQueue阻塞的方式是什么?

回答

1

这是一个很好的解释:

https://blogs.msdn.microsoft.com/toub/2006/04/12/blocking-queues/

从本质上讲,当您试图离队的东西阻塞发生。 EnQueue是线程安全的,而DeQueue将阻塞(阻塞调用DeQueue的线程),直到有某物得到为止。

好的是你不必关心(也不应该关心)如何实现阻塞。

+0

因此,消费者因此阻止排队而排队线程?但是这不会使用太多的CPU它只是一个线程? – Anubis

+0

当有疑问时,衡量 - 我怀疑封锁不会消耗任何超过处理项目将。因人而异! – n8wrl

相关问题