資料介紹
軟件簡介
SPSCQueue 是用 C++ 11 編寫的單個生產(chǎn)者單一消費(fèi)者等待和無鎖定大小隊列。
示例代碼
SPSCQueueq(2); auto t = std::thread([&] { while (!q.front()); std::cout << *q.front() << std::endl; q.pop(); }); q.push(1); t.join();
使用
-
SPSCQueue(size_t capacity); Create a?
SPSCqueue?holding items of type?T?with capacity?capacity. Capacity need to be greater than 2. -
void emplace(Args &&... args);Enqueue an item using inplace construction. Blocks if queue is full.
-
bool try_emplace(Args &&... args);Try to enqueue an item using inplace construction. Returns?
true?on success and?false?if queue is full. -
void push(const T &v);Enqueue an item using copy construction. Blocks if queue is full.
-
templatevoid push(P &&v); Enqueue an item using move construction. Participates in overload resolution only if?
std::is_constructible. Blocks if queue is full.::value == true -
bool try_push(const T &v);Try to enqueue an item using copy construction. Returns?
true?on success and?false?if queue is full. -
templatevoid try_push(P &&v); Try to enqueue an item using move construction. Returns?
true?on success and?false?if queue is full. Participates in overload resolution only if?std::is_constructible.::value == true -
T *front();Return pointer to front of queue. Returns?
nullptr?if queue is empty. -
pop();Dequeue first elment of queue. Invalid to call if queue is empty. Requires?
std::is_nothrow_destructible.::value == true
一旦一個單一的寫線程可以執(zhí)行入隊列的操作時,只有一個單一的讀線程可以執(zhí)行取隊列操作,其他的使用都是不允許的。
實現(xiàn)原理

底層實現(xiàn)是一個環(huán)形緩沖區(qū)。
參考資料:
- Intel.?Avoiding and Identifying False Sharing Among Threads.
- Wikipedia.?Ring buffer.
- Wikipedia.?False sharing.
性能測試
以下測試結(jié)果是基于?2 socket machine with 2 x Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz.
| NUMA Node / Core / Hyper-Thread | Throughput (ops/ms) | Latency RTT (ns) |
|---|---|---|
| #0,#0,#0 & #0,#0,#1 | 63942 | 60 |
| #0,#0,#0 & #0,#1,#0 | 37739 | 238 |
| #0,#0,#0 & #1,#0,#0 |
- 人工智能+消費(fèi):技術(shù)賦能與芯片驅(qū)動未來 9次下載
- 龍芯3A5000下實現(xiàn)按鍵檢測大小寫鎖定鍵和數(shù)字鍵 1次下載
- 《2022年全球消費(fèi)者洞察調(diào)研》中國報告
- 用默認(rèn)密碼當(dāng)心變?nèi)怆u!13條消費(fèi)者物聯(lián)網(wǎng)設(shè)備必須遵循的安全實務(wù)準(zhǔn)則
- 隊列實現(xiàn)數(shù)據(jù)循環(huán)外顯示源碼下載 4次下載
- 一個小隊列,MCU專用
- 消費(fèi)者技術(shù)協(xié)會國際標(biāo)準(zhǔn)CTA-861-F 1次下載
- 怎么樣實現(xiàn)車輛隊列行駛系統(tǒng)的總體設(shè)計論文 5次下載
- 單片機(jī)實現(xiàn)FIFO循環(huán)隊列的代碼和資料免費(fèi)下載
- 消費(fèi)者風(fēng)險態(tài)度的主觀信任模型 0次下載
- 基于多Agent的消費(fèi)者需求代理系統(tǒng)分析 41次下載
- 從消費(fèi)者角度分析數(shù)字電視的營銷策略 19次下載
- 面向消費(fèi)者的NGN
- 主動隊列管理建模及最優(yōu)控制策略
- 一種高效的磁盤隊列I/O機(jī)制
- 聊一聊消息隊列技術(shù)選型的7種消息場景 2.1k次閱讀
- 消息隊列的發(fā)展歷史 2.2k次閱讀
- 怎么設(shè)計實現(xiàn)一個無鎖高并發(fā)的環(huán)形連續(xù)內(nèi)存緩沖隊列 2.3k次閱讀
- 如何使用消息隊列進(jìn)行通信 3.2k次閱讀
- 如何使用消息隊列進(jìn)行通信 2.1k次閱讀
- 什么是消息隊列?消息隊列中間件重要嗎? 2.1k次閱讀
- SystemVerilog中的隊列 5.5k次閱讀
- 實現(xiàn)一個雙端隊列的步驟簡析 1.9k次閱讀
- 干貨:Linux內(nèi)核中等待隊列的四個用法 3.3k次閱讀
- 智能門鎖行業(yè)應(yīng)是什么樣子?從消費(fèi)者方面著手 3.2k次閱讀
- 消費(fèi)者對需求的日益增長牽引著汽車電子的增長 1.1k次閱讀
- 智能家居系統(tǒng)具有哪些優(yōu)勢,受到眾多消費(fèi)者的青睞 1.2k次閱讀
- 淺析HMB技術(shù)給我們消費(fèi)者帶來的福音 1.9w次閱讀
- 如何提高消費(fèi)者對物聯(lián)網(wǎng)服務(wù)的信心和使用意愿方面行之有效的見解 3.3k次閱讀
- 互聯(lián)網(wǎng)+家居模式存硬傷 消費(fèi)者陷入選擇困境 944次閱讀
下載排行
本周
- 1矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 2HT81696H 內(nèi)置升壓的30W立體聲D類音頻功放數(shù)據(jù)手冊
- 1.21 MB | 1次下載 | 免費(fèi)
- 3HTA6863 3W超低噪聲超低功耗單聲道D類音頻功率放大器數(shù)據(jù)手冊
- 0.87 MB | 次下載 | 免費(fèi)
- 4南芯 Southchip SC8802C 充電控制器 規(guī)格書 Datasheet 佰祥電子
- 88.16 KB | 次下載 | 免費(fèi)
- 5矽力杰 Silergy SY7065 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
- 910.67 KB | 次下載 | 免費(fèi)
- 6矽力杰 Silergy SY7066 同步升壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
- 989.14 KB | 次下載 | 免費(fèi)
- 7WD6208A產(chǎn)品規(guī)格書
- 631.24 KB | 次下載 | 免費(fèi)
- 8NB685 26 V,12 A,低靜態(tài)電流,大電流 同步降壓變換器數(shù)據(jù)手冊
- 1.64 MB | 次下載 | 2 積分
本月
- 1EMC PCB設(shè)計總結(jié)
- 0.33 MB | 12次下載 | 免費(fèi)
- 2PD取電芯片 ECP5702規(guī)格書
- 0.88 MB | 5次下載 | 免費(fèi)
- 3矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費(fèi)
- 4氮化鎵GaN FET/GaN HEMT 功率驅(qū)動電路選型表
- 0.10 MB | 3次下載 | 免費(fèi)
- 5PD取電芯片,可取5/9/12/15/20V電壓ECP5702數(shù)據(jù)手冊
- 0.88 MB | 3次下載 | 免費(fèi)
- 6SY50655 用于高輸入電壓應(yīng)用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
- 1.01 MB | 3次下載 | 免費(fèi)
- 7怎么為半導(dǎo)體測試儀選擇精密放大器
- 0.65 MB | 2次下載 | 免費(fèi)
- 8SY52341 次級側(cè)同步整流英文手冊
- 0.94 MB | 2次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191469次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論