多執行緒 生產者消費者模式(2)

2021-07-11 21:07:15 字數 1285 閱讀 4714

現在用佇列來實現一次這個生產者和消費者模型,程式的主要思想如下圖。

乙個全域性的佇列,乙個鎖,乙個訊號量,collectimages和sendimages執行緒訪問這個佇列的時候都加鎖。

全部原始碼

//

// created by honkee on 5/17/16.

//#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

void* collectimages(void*);

void* sendimages(void*);

void err_exit(int, string);

pthread_mutex_t queuemutex = pthread_mutex_initializer;

pthread_cond_t queuecond = pthread_cond_initializer;

bool flag = false;

//struct thread_var ;

pthread_t* sendthread;

pthread_t* collectthread;

int collectthreadcnt = 1;

int sendthreadcnt = 4;

queue

q;int main()

}for(int i = 0; i < sendthreadcnt; ++i)

}while(1)

return0;}

void* collectimages(void* arg)

if(cond)

}}void* sendimages(void* arg)

flag = false;

string str = q.front();

q.pop();

cout

<< "thread: "

<< pid << " queue size: "

<< q.size() << " send finish: "

<< str << endl <5);

if(cond)

}}void err_exit(int err, string str)

多執行緒 生產者消費者

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

java多執行緒生產者 消費者模式

1 生產者僅僅在倉儲未滿時候生產,倉滿則停止生產。2 消費者僅僅在倉儲有產品時候才能消費,倉空則等待。3 當消費者發現倉儲沒產品可消費時候會通知生產者生產。4 生產者在生產出可消費產品時候,應該通知等待的消費者去消費 使用object的wait notify 方法 1.wait 當快取區已滿 已空時...

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...