1
我們想知道給定時間點隊列中元素的個數。 我們推送和彈出對象,我們想知道隊列緩衝區中的對象的數量。 這是否有任何內置功能? 或者其他方式來獲得它?如何獲得提升SPSC隊列的大小?
http://www.boost.org/doc/libs/1_53_0/doc/html/boost/lockfree/spsc_queue.html
我們想知道給定時間點隊列中元素的個數。 我們推送和彈出對象,我們想知道隊列緩衝區中的對象的數量。 這是否有任何內置功能? 或者其他方式來獲得它?如何獲得提升SPSC隊列的大小?
http://www.boost.org/doc/libs/1_53_0/doc/html/boost/lockfree/spsc_queue.html
你不能可靠地獲得大小,因爲它邀請的競爭條件。出於同樣的原因,你不會找到empty()
方法:在該方法返回一個值時,它將是不相關的,因爲它可能已經改變。
有時lockfree容器提供了一個 「unreliable_size()」 方法(統計/日誌記錄的目的)
這裏的特殊情況是SPSC承擔單一生產商和消費者:
size_type read_available() const;
可以從spsc_queue彈出的可用元素的數量
size_type write_available() const;
GET寫空間寫元素
注意這些只有有效從各自的消費者/生產者線程使用時。