c 11 多執行緒實現生產者消費者模型

2021-08-14 05:12:26 字數 1126 閱讀 6587

#include 

#include

#include

#include

#include

#include

using

namespace

std;

const

int length = 5;

int buffer[length];

int read_index;

int write_index;

mutex mtx;

condition_variable cond_not_full;// 指示產品緩衝區不為滿

condition_variable cond_not_empty;// 指示產品緩衝區不為空

void produce(int arg)

buffer[write_index] = arg;

printf("生產了data:%d\n", arg);

write_index++; // 寫入位置後移.

if (write_index >= length) // 寫入位置若是在佇列最後則重新設定為初始位置.

write_index = 0;

cond_not_empty.notify_all();// 通知消費者產品庫不為空.

lock.unlock();

}int consume()

arg = buffer[read_index];

read_index++;

if (read_index >= length) // 讀取位置若移到最後,則重新置位.

read_index = 0;

printf("取出了data:%d\n", arg);

cond_not_full.notify_all(); // 通知消費者產品庫不為滿.

lock.unlock();

return arg;

}void producerthread(int arg) // 生產者執行緒

}void consumethread(int arg) // 消費者執行緒

}int main(int argc, const

char *argv)

多執行緒 生產者消費者

這個就不多說了,直接上 include include using namespace std const unsigned short size of buffer 10 緩衝區長度 unsigned short productid 0 產品號 unsigned short consumeid 0...

C 11實現簡單生產者消費者模式

當前c 11已經實現了多執行緒 互斥量 條件變數等非同步處理函式,並且提供了諸如sleep之類的時間函式,所以後面使用c 開發這一塊的時候完全可以實現跨平台,無需在windows下寫一套然後又在linux下寫一套了。本文用c 11實現了乙個簡單的生產者 消費者模式,生產者每1s將乙個數值放到雙向佇列...

C 11 實現生產者消費者雙緩衝

基礎的生產者消費者模型,生產者向公共快取區寫入資料,消費者從公共快取區讀取資料進行處理,兩個執行緒訪問公共資源,加鎖實現資料的一致性。通過加鎖來實現 1 class produce 1 8void runproduce 15 16void join 20void start 23void stop ...