作業系統的經典問題
生產者和消費者問題的程式設計,使用語言為c++,這是作業系統實驗課上的程式設計,拿出來和大家分享,不足之處還望指出,謝謝。
// 生產者消費者
#include#include#includeusing namespace std;
struct product//生產的產品
;queueg_queue;//緩衝池佇列
handle bufferfullsemaphore;//緩衝池滿的訊號量
handle bufferemptysemaphore;//緩衝池空的訊號量
handle mutex;//操作互斥鎖
static int num = 0;//當前池子的位置
dword winapi producerfunc(lpvoid n);//生產者程序函式
dword winapi consumerfunc(lpvoid n);//消費者程序函式
int buffersize;//緩衝池大小
int costtask = 0;//消費多少個就結束
int costnum = 0;//當前消費的數量
dword thrdid;
class producer
int getid()
int getproductnum()
void incproductnum()
handle gethandle()
product getproduct()
void setproductpos(int n)
protected:
handle handle;
int productnum;
int id;
product product;
};class consumer
int getid()
int getconsumenum()
void incconsumenum()
handle gethandle()
protected:
handle handle;
int consumenum;
int id;
};dword winapi producerfunc(lpvoid n)
else
} return 0;
}dword winapi consumerfunc(lpvoid n)
else
}return 0;
}int main()
for (int i = 0; i < c ; i++)
for (int i = 0; i < p; i++)
for (int i = 0; i < c; i++)
delete producers, consumers;
closehandle(bufferemptysemaphore);
closehandle(bufferfullsemaphore);
closehandle(mutex);
getchar();
getchar();
return 0;
}
生產者消費者 生產者與消費者模式
一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...
生產者消費者
using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...
生產者消費者
執行緒通訊 乙個執行緒完成了自己的任務時,要通知另外乙個執行緒去完成另外乙個任務.wait 等待 如果執行緒執行了wait方法,那麼該執行緒會進入等待的狀態,等待狀態下的執行緒必須要被其他執行緒呼叫notify方法才能喚醒。notify 喚醒 喚醒執行緒池等待執行緒其中的乙個。notifyall 喚...