c 11 生產者和消費者

2021-08-14 10:30:58 字數 1064 閱讀 8243

#include 

#include 

#include 

#include 

using

namespace std;  

// 定義兩個條件變數

//  佇列未滿

std::condition_variable     queuenotfull;  

// 佇列不空

std::condition_variable     queuenotempty;  

// 佇列鎖

std::mutex                          queuemutex;  

// 佇列

std::deque               que;  

enum

;  // 判斷佇列是否為空

bool                                    empty()  

// 判斷佇列是否已滿

bool                                    full()  

// 往佇列中新增資料

void                                    put(int element)  

que.push_back(element);  

// 通知其他執行緒,佇列不空

queuenotempty.notify_all();  

}  // 從佇列中取出資料

int                                     get()  

int t = que.front();  

que.pop_front();  

// 通知其他等待的物件,佇列不滿

queuenotfull.notify_all();  

return t;  

}  // 消費者執行緒

void getfunc()  

}  // 生產者執行緒

void putfunc()  

}  int main(int arc,char** argv)  

c 11生產者消費者

綜合運用 c 11 中的新的基礎設施 主要是多執行緒 鎖 條件變數 來闡述乙個經典問題 生產者消費者模型,並給出完整的解決方案。include include include include include include static const int kitemrepositorysize 1...

5 12 生產者和消費者

一 生產者和消費者之間的關係 1 生產者將生產出來的資訊不斷存入乙個區域內,消費者將資訊從該區域內不斷讀取出來 生產者錄入資訊 消費者讀取資訊 例 電影票 public class movie public void setname string name public string getinfo...

6 1 生產者 消費者問題

在多執行緒程式中,執行緒之間通常存在分工。在一種常見模式中,一些執行緒是生產者,一些是消費者。需要強制執行幾個同步約束才能使此系統正常工作 在緩衝區中新增或刪除專案時,緩衝區處於不一致狀態。因此,執行緒必須具有對緩衝區的獨佔訪問許可權。如果消費者執行緒在緩衝區為空時到達,則會阻塞,直到生產者新增新專...