BlockingQueue 以何种方式阻塞?

In what way is a BlockingQueue blocking?

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

这个解释很好:

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

本质上,阻塞发生在您尝试对某些内容进行出队操作时。 EnQueue 是线程安全的,而 DeQueue 会阻塞(阻塞调用 DeQueue 的线程)直到有东西可以获取。

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