2016-12-01 99 views
4

據我所知,一個BlockingCollection使用非忙等待,這是一個新的項目/回調通知。所以我不明白它是如何阻塞,但我認爲我可能混合阻塞的線程和阻止訪問共享對象?BlockingQueue阻塞的方式是什麼?

回答

1

這是一個很好的解釋:

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

從本質上講,當您試圖離隊的東西阻塞發生。 EnQueue是線程安全的,而DeQueue將阻塞(阻塞調用DeQueue的線程),直到有某物得到爲止。

好的是你不必關心(也不應該關心)如何實現阻塞。

+0

因此,消費者因此阻止排隊而排隊線程?但是這不會使用太多的CPU它只是一個線程? – Anubis

+0

當有疑問時,衡量 - 我懷疑封鎖不會消耗任何超過處理項目將。因人而異! – n8wrl

相關問題