#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 ...