生產者和消費者
#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...