boost 使用無鎖佇列(多生產者 多消費者)

2021-10-03 17:22:01 字數 680 閱讀 4963

一、構造乙個無鎖佇列:boost::lockfree::queue:

1、第乙個引數標識佇列中元素型別;

2、第二個引數用來協助配置boost::lockfree::queue:

(1)、boost::lockfree::fixed_sized是否為固定大小。預設是boost::lockfree::fixed_sized,表示當你呼叫push時,如果此時已經沒有空間可用,此時佇列可以自動增長,push會成功;如果是boost::lockfree::fixed_sized,當你呼叫push時,如果此時已經沒有空間可用,push將會失敗,返回false。

(2)、boost::lockfree::capacity在編譯時就確定了陣列的大小。設定了capacity意味著一定是:boost::lockfree::fixed_sized

(3)、最大元素的個數:2**16 - 2.

二、示例:

// lockfreequeue_test.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include #include #include #include //佇列中的元素型別

struct my_object;};

//定義乙個無鎖佇列

boost::lockfree::queue

單生產者單消費者迴圈無鎖佇列

ifndef cread write queue h define cread write queue h 佇列尺寸 define default queue size 12 max count 4096 size最大30 預設為12 templateclass cread write queue ...

生產者模擬佇列

題目 實現乙個佇列 佇列的應用場景為 乙個生產者執行緒將int型別的數入列,乙個消費者執行緒將int型別的數出列。這段代段太美了,值得儲存 include include using namespace std templateclass circular bool empty bool full ...

多生產者 多做「生產者」,少做「消費者」

生產者 vs 消費者 哪個更好?消費者 定義非常廣泛,購買一件物品 進行一次消費的人都是消費者 更深一層的含義就是 消費 了你的金錢 時間 精力,比如刷抖音,花費了你的時間和精力,單方面地接受資訊 向內汲取 向外消耗時間或金錢,那你就是 消費者 生產者 生產 製造 創作了某個物品 作品,別人消費你的...