條件變數和生產者消費模式

2021-09-12 17:50:07 字數 690 閱讀 1774

#include#include#include#includeint ready = 0;

pthread_mutex_t mutex;

pthread_cond_t has_product;

void* producer(void* arg)

}// 消費者

void* consumer(void* arg)

// 有產品,消費產品

ready--;

printf("consume product\n");

pthread_mutex_unlock(&mutex);

sleep(1);

}}void main()

備註:

1、上述**是基於c實現的。linux編譯指令一般為gcc xx.c -o xx,因為**使用pthread,情況有點特殊,此處編譯指令為:gcc xx.c -o xx-lpthread。否則編譯會報錯。

2、如果大家對**中引用的定義的介面理解的不深。可以懷疑這段**可能會產生死鎖。從而對執行結果產生困惑。撥開雲霧見天日出路在對pthread_cond_wait(&has_product, &mutex);的理解。(我的理解可能有錯,pthread_cond_wait在producer沒有發出pthread_cond_signal時會在解鎖和加鎖中來回操作)。

生產者和消費者模式

一 建立個生產者類 package consumerandproducer author tanhw119214 version jdk1.8.0 171 date on 2018 8 2 16 57 public class producer implements runnable public ...

生產者和消費者模式

消費者和生產模式是典型的軟體應用場景,比如工廠生產出產品,先送到商店,消費者再到商店去買。生產者不會每生產乙個就送到商店去,一般是生產一定數量的產品,比如生產數量為n時,再送到商店去,這樣減少來回運輸的成本。這樣當商店的n個產品賣完時,消費者再來買時需要等待 wait 當商店有n個產品未賣時,生產者...

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

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