C Linux 生產者消費者

2021-10-22 18:55:43 字數 881 閱讀 3747

#include

#include

#include

#include

#include

#define producer 4

//生產者數目

#define consumer 4

//消費者數目

#define size 8

//緩衝區大小

int pool[size]

;int out =0;

//緩衝區放入位置

int in =0;

//緩衝區取出位置

sem_t room;

//可用的空緩衝區,建立空餘位置的訊號量

sem_t product;

//緩衝區內商品數目的訊號量

sem_t mutex;

//互斥訊號量

void

*producer_i()

//生產者

}void

*consumer_j()

//消費者

}int

main()

seminit =

sem_init

(&product,0,

0);//初始化緩衝區內可用產品數的訊號量,初始值為0,相當於full=0

if(seminit!=0)

for(

int i=

0;i)//建立生產者執行緒

for(

int i=

0;i)//建立消費者執行緒

for(

int i=

0;i)for

(int i=

0;i)}

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

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

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...

生產者消費者

執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...