生產者與消費者問題的實現

2021-06-02 00:42:45 字數 1236 閱讀 4839

生產者與消費者問題的實現。建立一組「生產者」執行緒和一組「消費者」執行緒,並建立乙個長度為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...