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