生產者和消費者問題c 作業系統)

2021-08-09 09:29:08 字數 1682 閱讀 5192

生產者和消費者

#include #include #include#includeusing namespace std;

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_hfullitems; //緩衝區中被占用的項

handle g_hemptyitems; //緩衝區中的空項

dword winapi producer(lpvoid); //生產者執行緒,dword 變數型別的記憶體佔位

dword winapi consumer(lpvoid); //消費者執行緒

int main()

const unsigned short producers_count = 3; //生產者的個數

const unsigned short consumers_count = 2; //消費者的個數

//總的執行緒數

const unsigned short threads_count = producers_count + consumers_count;

handle hthreads[threads_count]; //各執行緒的handle

dword producerid[producers_count]; //生產者執行緒的識別符號

dword consumerid[consumers_count]; //消費者執行緒的識別符號

//建立生產者執行緒

for (int i = 0; i//建立消費者執行緒

for (int 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;

}

作業系統,生產者 消費者問題詳解

生產者 消費者問題 分析問題,確定臨界區 設定互斥訊號量,初值為1 臨界區之前對訊號量執行p操作臨界區之後對訊號量執行v操作分析問題,找出 需要實現 一前一後 的同步關係 設定同步訊號量,初始值為0 在 前操作 之後執行v操作在 後操作 之前執行p操作分析問題,畫出前驅圖,把每一對前驅關係都看成乙個...

作業系統 學習 生產者和消費者問題

問題描述 若干程序通過有限的共享緩衝區交換資料。其中,生產者 程序不斷寫入,而 消費者 程序不斷讀出 共享緩衝區共有n個 任何時刻只能有乙個程序可對共享緩衝區進行操作。define n 100 int count 0 void producer void void consumer void 演算法...

作業系統裡的生產者 消費者問題

前段時間網上有乙個人讓我幫他改個程式,作業系統裡面生產者與消費者的那個程式,寫的一片混亂,改了好長時間。很弱智。include include include include include using namespace std define buffer num 6 int product bu...