生產者與消費者問題的實現。建立一組「生產者」執行緒和一組「消費者」執行緒,並建立乙個長度為n的全域性陣列作為共享緩衝區。「生產者」向緩衝區輸入資料,「消費者」從緩衝區讀出資料。當緩衝區滿時,「生產者」必須阻塞,等待「消費者」取走緩衝區資料後將其喚醒。當緩衝區空時,「消費者」阻塞,等待「生產者」生產了產品後將其喚醒。試用訊號量實現「生產者」與「消費者」執行緒之間的同步。
#include #include const unsigned short size_of_buffer = 10; //緩衝區長度
unsigned short productid = 0; //產品號
unsigned short consumeid = 0; //將被消耗的產品號
unsigned short in = 0; //產品進緩衝區時的緩衝區下標
unsigned short out = 0; //產品出緩衝區時的緩衝區下標
int g_buffer[size_of_buffer]; //緩衝區是個迴圈佇列
bool g_continue = true; //控制程式結束
handle g_hmutex; //用於執行緒間的互斥
handle g_hfullsemaphore; //當緩衝區滿時迫使生產者等待
handle g_hemptysemaphore; //當緩衝區空時迫使消費者等待
dword winapi producer(lpvoid); //生產者執行緒
dword winapi consumer(lpvoid); //消費者執行緒
int main()
//建立消費者執行緒
for (i=0;iwhile(g_continue)
}return 0;
}//生產乙個產品。簡單模擬了一下,僅輸出新產品的id號
void produce()
//把新生產的產品放入緩衝區
}//從緩衝區中取出乙個產品
void take()
}//消耗乙個產品
void consume()
//生產者
dword winapi producer(lpvoid lppara)
return 0;
}//消費者
dword winapi consumer(lpvoid lppara)
return 0;
}
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者 消費者問題實現
include include include include include include define need p 2 生產者程序數 define need c 2 消費者程序數 define works p 10 每個生產者程序執行的次數 define works c 10 每個消費者程序...
生產者與消費者問題
使用synchronized同步鎖機制,執行緒先獲得物件的鎖,先上鎖後執行執行緒內容,執行完成後釋放鎖。使用wait 和notifyall 簡單實現生產者與消費者 public class test1 class producer implements runnablecatch interrupt...