freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課程設(shè)計“生產(chǎn)者消費者”問題-文庫吧資料

2025-03-31 02:43本頁面
  

【正文】 //消費的線程 { WaitForSingleObject(Mutex ,INFINITE)。 //用來實現(xiàn)進(jìn)程的互斥 HANDLE proceducer=CreateSemaphore(NULL, 1,1, proceducer)。 //產(chǎn)品被生產(chǎn)的函數(shù),為了合理區(qū)分生產(chǎn)產(chǎn)品 cout第finish個產(chǎn)品被消費,取出 endl。 cout緩沖區(qū)已空 !endl。 //生產(chǎn)完畢的產(chǎn)品數(shù)目 DWORD a。 //緩沖區(qū)滿 int count(0)。 //空位的總數(shù)目 char empty。}四、 源代碼include include include define random (rand()*10000)/RAND_MAX //定義一個隨機函數(shù)來生產(chǎn)產(chǎn)品,并且使兩個顧產(chǎn)品間的時間少于10秒 int long waiting(0)。sume a message。V(mutex)。 get a message from buffer[out]。}void consumer(){ do{ P(full)。V(full)。in=(in+1)%n。P(mutex)。}void proceducer(){ do{ prodece a new meddage。int out=0。message buffer[n]。semaphore full=0。producertail)。 // 消費者隊列PCB* producerhead=NULL, * producertail=NULL。為了解決生產(chǎn)者和消費者問題,應(yīng)該設(shè)置信號量和變量如下: full: 滿緩沖區(qū)資源信號量 ,初值為0;empty:空緩沖區(qū)資源信號量 ,初值為n;in: 生產(chǎn)者指針,初值均為0;out: 消費者指針,均為0;mutex:緩沖區(qū)操作的互斥信號量,初值為1PCB* readyhead=NULL, * readytail=NULL。所有生產(chǎn)者和消費者要協(xié)調(diào)工作,以完成數(shù)據(jù)的交換。如下圖所示,生產(chǎn)者進(jìn)程不斷向循環(huán)緩沖池區(qū)中寫入數(shù)據(jù)(即生產(chǎn)數(shù)據(jù)),而消費者進(jìn)程不斷從循環(huán)緩沖池區(qū)中讀出數(shù)據(jù)(即消費數(shù)據(jù))。系統(tǒng)創(chuàng)建兩類進(jìn)程:proceducer ()和consumer(),分別用來描述生產(chǎn)者和消費者的行為。這些同步對象在一個線程中創(chuàng)建,在其他線程中都可以使用,從而實現(xiàn)同步互斥。在linux中,常見的同步對象有:信號量(Semaphore)、互斥量(Mutex)、臨界段(CriticalSection)等。而消費者之間只有在對同一產(chǎn)品進(jìn)行消費時才需要互斥,同時它們在消費過程結(jié)束時需要判斷該消費對象是否已經(jīng)消費完畢并清除該產(chǎn)品。 在測試用例文件中指定了所有的生產(chǎn)和消費的需求,只有當(dāng)共享緩沖區(qū)的數(shù)據(jù)滿足了所有關(guān)于它的消費需求后,此共享緩沖區(qū)才可以作為空閑空間允許新的生產(chǎn)者使用。生產(chǎn)者可以把產(chǎn)品放到目前某一個空緩沖區(qū)中。④要求在每個線程發(fā)出讀寫操作申請、開始讀寫操作和結(jié)束讀寫操作時分別顯示提示信息。例上述測試
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1