4
私は、BlockingCollectionが新しい項目/コールバックの通知である非ビジー待機を使用していることを理解しています。だから私はそれがどのようにブロックされているのか理解していないが、私はおそらくブロックされたスレッドを混在させ、共有オブジェクトへのアクセスをブロックしたと思う?どのようにしてBlockingQueueがブロックされていますか?
私は、BlockingCollectionが新しい項目/コールバックの通知である非ビジー待機を使用していることを理解しています。だから私はそれがどのようにブロックされているのか理解していないが、私はおそらくブロックされたスレッドを混在させ、共有オブジェクトへのアクセスをブロックしたと思う?どのようにしてBlockingQueueがブロックされていますか?
これは素晴らしい説明がある:あなたが何かをデキューしようとすると、
https://blogs.msdn.microsoft.com/toub/2006/04/12/blocking-queues/
基本的に、ブロッキングが発生します。 EnQueueはスレッドセーフで、DeQueueは何かがあるまでブロックします(DeQueueを呼び出すスレッドをブロックします)。
いいことは、ブロックがどのように実装されているかについて気にする必要はありません。
したがって、消費者はキューを停止している間にスレッドを停止していますか?しかし、これは多くのCPUを使用しないだけスレッドを結びつける? – Anubis
疑わしい時には、対策が必要以上に消費しないブロックがあると思われます。 YMMV! – n8wrl