Linux C 實現生產者消費者問題

2021-09-20 18:34:59 字數 1599 閱讀 5091

//訊號量---執行緒間通訊

//「生產者消費者」 問題

#include

#include

#include

#include

#include

#define msleep(x)   usleep(x*1000)

#define product_speed       3               //生產速度

#define consum_speed        1               //消費速度

#define init_num                3               //倉庫原有產品數

#define total_num               10          //倉庫容量

sem_t p_sem, c_sem, sh_sem;int num=init_num; void

product

(void)

//生產產品

intadd_to_lib

()//新增產品到倉庫

void

consum

()//消費

intsub_from_lib

()//從倉庫中取出產品

void *productor

(void *arg)

//生產者執行緒

} void *consumer

(void *arg)

//消費者執行緒

} int

main

()

//訊號量---執行緒間通訊

//「生產者消費者」 問題

#include

#include

#include

#include

#include

#define msleep(x)   usleep(x*1000)

#define product_speed       3               //生產速度

#define consum_speed        1               //消費速度

#define init_num                3               //倉庫原有產品數

#define total_num               10          //倉庫容量

sem_t p_sem, c_sem, sh_sem;int num=init_num; void

product

(void)

//生產產品

intadd_to_lib

()//新增產品到倉庫

void

consum

()//消費

intsub_from_lib

()//從倉庫中取出產品

void *productor

(void *arg)

//生產者執行緒

} void *consumer

(void *arg)

//消費者執行緒

} int

main

()

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

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

生產者消費者

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