經(jīng)典的PV問(wèn)題_第1頁(yè)
經(jīng)典的PV問(wèn)題_第2頁(yè)
經(jīng)典的PV問(wèn)題_第3頁(yè)
經(jīng)典的PV問(wèn)題_第4頁(yè)
經(jīng)典的PV問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上PV問(wèn)題:1 生產(chǎn)-消費(fèi)模型,推廣到多個(gè)生產(chǎn)者,多個(gè)消費(fèi)者的生產(chǎn)消費(fèi)模型;設(shè)一個(gè)生產(chǎn)者進(jìn)程P,一個(gè)消費(fèi)者進(jìn)程Q,他們通過(guò)一個(gè)緩沖區(qū)聯(lián)系起來(lái),緩沖區(qū)只能容納一個(gè)產(chǎn)品,生產(chǎn)者不斷的生產(chǎn)產(chǎn)品,然后往空緩沖區(qū)送產(chǎn)品;消費(fèi)者不斷的從緩沖區(qū)中取出產(chǎn)品,并消費(fèi)。1.1 一個(gè)生產(chǎn)者、一個(gè)消費(fèi)者、一個(gè)緩沖區(qū)的模型:信號(hào)量empty=0 full=0專心-專注-專業(yè)P:Repeat生產(chǎn)一個(gè)產(chǎn)品送產(chǎn)品到緩沖區(qū)V(full);P(empty);Until false;Q:Repeat:P(full);從緩沖區(qū)拿走一個(gè)產(chǎn)品V(empty);消費(fèi)產(chǎn)品Until false;1.2 一個(gè)生產(chǎn)者、一

2、個(gè)消費(fèi)者、一個(gè)緩沖區(qū)的第二種解法:信號(hào)量empty=1 full=0P:RepeatP(empty);生產(chǎn)一個(gè)產(chǎn)品送產(chǎn)品到緩沖區(qū)V(full);Until false;Q:RepeatP(full);從緩沖區(qū)取產(chǎn)品V(empty);消費(fèi)產(chǎn)品Until false;1.3 一個(gè)生產(chǎn)者、一個(gè)消費(fèi)者、n個(gè)緩沖區(qū)的模型:(不需要考慮互斥)信號(hào)量empty=n 空緩沖區(qū)的數(shù)目full=0 滿緩沖區(qū)的數(shù)目P:i:=0Repeat生產(chǎn)產(chǎn)品P(empty);送產(chǎn)品到緩沖池bufferiV(full);i:=(i+1)mod n;Until false;Q:j:=0RepeatP(full);從緩沖池buffe

3、ri中取產(chǎn)品V(empty);消費(fèi)產(chǎn)品j:=(j+1)mod n;Until false;1.4 m個(gè)生產(chǎn)者、k個(gè)消費(fèi)者、n個(gè)緩沖區(qū)的模型:(需要考慮互斥)信號(hào)量:empty=n 空緩沖區(qū)的數(shù)目full=0 滿緩沖區(qū)的數(shù)目mutex1(P進(jìn)程互斥),mutex2(Q進(jìn)程互斥)=1 互斥信號(hào)量,實(shí)現(xiàn)臨界區(qū)(緩沖池)的互斥P:i:=0Repeat生產(chǎn)產(chǎn)品P(empty);P(mutex1);添加產(chǎn)品到緩沖區(qū)bufferii:=(i+1)mod n;V(mutex1);V(full);Until false;Q:j:=0RepeatP(full);P(mutex2);從緩沖區(qū)bufferj中取產(chǎn)品j

4、:=(j+1)mod n;V(mutex2);V(empty);消費(fèi)產(chǎn)品Until false;2 讀者-寫者模型,分兩種:讀者優(yōu)先,寫著優(yōu)先;某個(gè)共享文件F,系統(tǒng)允許若干進(jìn)程對(duì)文件F讀或?qū)?,但?guī)定:1、多個(gè)進(jìn)程可以同時(shí)讀文件F;2、任一個(gè)進(jìn)程在對(duì)文件F進(jìn)行寫時(shí)不允許其他進(jìn)程對(duì)文件進(jìn)行讀或?qū)懀?、當(dāng)有進(jìn)程在讀文件是不允許任何進(jìn)程去寫文件。2.1 第一類讀者-寫者問(wèn)題:讀者優(yōu)先除非有寫者在寫文件,否則沒(méi)有一個(gè)讀者需要等待。分析思想:讀者到:1)無(wú)讀者、寫者,新讀者可以讀2)有寫者等,但有其它讀者正在讀,則新讀者也可以讀3)有寫者寫,新讀者等寫者到:1)無(wú)讀者,新寫者可以寫2)有讀者,新寫者等待3

5、)有其它寫者,新寫者等待信息量:readcount = 0 記錄當(dāng)前正在讀的讀者進(jìn)程數(shù),這是一個(gè)共享變量,需要互斥使用mutex = 1 互斥信息量write = 1 用于寫者互斥,或第一個(gè)讀者和最后一個(gè)讀者與寫者互斥READ:Repeat;P(mutex);readcount:=readcount+1;if(readcount=1)P(write);V(mutex);讀文件P(mutex);readcount:=readcount-1;if(readcount=0)V(write);V(mutex);Until falseWRITE:RepeatP(write);寫文件V(write);Un

6、til false;2.2 第二類讀者-寫者問(wèn)題:寫者優(yōu)先一旦一個(gè)寫者到來(lái),它應(yīng)該盡快對(duì)文件進(jìn)行寫操作。則新來(lái)到的讀者不允許進(jìn)行讀操作。分析思想:讀者到:1) 無(wú)讀者且無(wú)寫者,新讀者讀2) 有讀者但無(wú)寫者等待,新讀者讀3) 有讀者但有寫著等待,讀者等待4) 有寫者在寫,新讀者等待寫者到:1) 無(wú)讀者且無(wú)寫者,新寫者寫2) 有讀者在讀,新寫者等待3) 有寫者寫,新寫者等待信息量:read:=1 讀者信息量,用于第一個(gè)寫者與讀者互斥readcount:=0 記錄當(dāng)前讀者的進(jìn)程數(shù)mutex:=1 互斥信息量writecount:=0 記錄當(dāng)前寫者排隊(duì)的進(jìn)程數(shù)write:=1 寫者信息量,用于寫者互斥

7、,第一個(gè)讀者與寫者互斥mutex2:=1 互斥信息量P:RepeatP(read)P(mutex)V(read)readcount:=readcount+1;if(readcount=1)P(write)V(mutex)讀文件P(mutex)readcount:=readcount-1if(readcount=0)V(write)V(mutex)Until falseQ:RepeatP(mutex2)writecount:= writecount+1if(writecount=1)P(read)V(mutex2)P(write)寫文件V(write)P(mutex2)writecount:=w

8、ritecount-1if(writecount=0)V(read)V(mutex2)Until false;3 哲學(xué)家就餐模型,共3種解法;哲學(xué)家就餐問(wèn)題Dijkstra,1965 問(wèn)題描述:有五個(gè)哲學(xué)家以思考、用餐交替進(jìn)行的方式生活,他們坐在一張圓桌邊,桌子上有5個(gè)盤子和5只筷子。當(dāng)一個(gè)哲學(xué)家思考時(shí),他不與鄰座的哲學(xué)家發(fā)生聯(lián)系,當(dāng)一個(gè)哲學(xué)家感覺(jué)到餓了,他就試圖拿起他左右兩邊的筷子用餐。如果該哲學(xué)家的鄰座已經(jīng)拿到筷子,則他可能只能拿到一只甚至一支筷子都拿不到。當(dāng)一個(gè)饑餓的哲學(xué)家得到了兩只筷子,他就可以用餐。當(dāng)他用餐完畢,就放下筷子再次進(jìn)行思考。一般解法:#define chopstick5v

9、oid philosopher (int i)whileP(chopsticki);P(chopstick(i+1)%5);用餐;V(chopsticki);V(chopstick(i+1)%5);思考;3.1 改進(jìn)解法1最多允許4個(gè)哲學(xué)家同時(shí)坐在桌子周圍。分析思想:1) 當(dāng)有哲學(xué)家進(jìn)程啟動(dòng)時(shí),檢查有幾個(gè)哲學(xué)家進(jìn)程已經(jīng)啟動(dòng),如果已經(jīng)啟動(dòng)四個(gè),則等待。信息量:personcount:=4 記錄已經(jīng)坐下的哲學(xué)家人數(shù),即啟動(dòng)進(jìn)程的數(shù)量chopstick0-4:=1 筷子的信息量解法:#define chopstick5#define personcountvoid philosopher (int

10、i)P(personcount);whileP(chopsticki);P(chopsticki+1);用餐;V(chopsticki);P(chopsticki+1);思考;V(personcount);3.2 改進(jìn)解法2僅當(dāng)一個(gè)哲學(xué)家左右兩邊的筷子都可用時(shí),才允許他拿筷子參照講義#define N 5#define THINKING 0#define HUNGRY 1#define EATING 2#typedef int semaphore;int stateNsemaphore mutex=1semaphore sNvoid test(int i)if(statei=HUNGRY)&a

11、mp;&(state(i-1)%5!=EATING)&&(state(i+1)%5!=EATING)statei=EATING;V(si);void philosopher(int i)while(true)思考;P(mutex);statei=HUNGRY;test(i);V(mutex);P(si);P(chopsticki);P(chopstick(i+1)%5);用餐;V(chopsticki);V(chopstick(i+1)%5);P(mutex);statei=THINKING;test(i-1)%5);test(i+1)%5);V(mutex);stat

12、ei=THINKING;si=0;3.3 改進(jìn)解法3給所有哲學(xué)家編號(hào),奇數(shù)號(hào)的哲學(xué)家必須首先拿左邊的筷子,偶數(shù)號(hào)的哲學(xué)家則反之信號(hào)量:mutex:=1 互斥信息量chopstick5:=1 筷子的信息量void philosopher(int i)while(true)思考;P(mutex);if(0=i%2)P(chopstick(i+1)%5);P(chopsticki);elseP(chopsticki);P(chopstick(i+1)%5);V(mutex);用餐;P(mutex);V(chopsticki);V(chopstick(i+1)%5;V(mutex);4 吸煙者問(wèn)題,1

13、種解法;吸煙者問(wèn)題(Patil, 1971) 吸煙者問(wèn)題或者說(shuō)是酒吧聽音樂(lè)問(wèn)題三個(gè)吸煙者在一間房間內(nèi),還有一個(gè)香煙供應(yīng)者。為了制造并抽掉香煙,每個(gè)吸煙者需要三樣?xùn)|西:煙草、紙和火柴。供應(yīng)者有豐富的貨物提供。三個(gè)吸煙者中,第一個(gè)有自己的煙草,第二個(gè)有自己的紙,第三個(gè)有自己的火柴。供應(yīng)者將兩樣?xùn)|西放在桌子上,允許一個(gè)吸煙者進(jìn)行對(duì)健康不利的吸煙。當(dāng)吸煙者完成吸煙后喚醒供應(yīng)者,供應(yīng)者再放兩樣?xùn)|西(隨機(jī)地)在桌面上,然后喚醒另一個(gè)吸煙者。試為吸煙者和供應(yīng)者編寫程序解決問(wèn)題。酒吧聽音樂(lè)問(wèn)題:在一件酒吧里有三個(gè)音樂(lè)愛(ài)好者隊(duì)列,第一隊(duì)的音樂(lè)愛(ài)好者只有隨身聽,第二隊(duì)只有音樂(lè)磁帶,第三隊(duì)只有電池,而要聽音樂(lè)就必須

14、隨身聽,磁帶和電池這三種物品俱全。酒吧老板一次出售這三種物品中的任意兩種,當(dāng)一名音樂(lè)愛(ài)好者得到這三種物品并聽完一首樂(lè)曲后,酒吧老板才能再一次出售這三種物品中的任意兩種。于是第二名音樂(lè)愛(ài)好者得到這三種物品,并開始聽音樂(lè)。全部買賣就這樣進(jìn)行下去。以吸煙者問(wèn)題為例:分析思想:供應(yīng)者每次供應(yīng)兩種物品,并根據(jù)這兩種物品叫相應(yīng)的吸煙者拿走物品吸煙,其他沒(méi)有叫到的吸煙者繼續(xù)等待。吸煙者吸完煙后叫醒供應(yīng)者再次供應(yīng)物品。信息量:tobacco:=0paper:=0match:=0smoker1:=0smoker2:=0smoker3:=0seller:=0程序:semaphore tobacco=0,paper

15、=0,match=0;semaphore smoker1=0,smoker2=0,smoker3=0,seller=0;int casevoid seller()while(1)P(seller);Randomnize;case = random(0,2);if(case=0)V(tobacco);V(paper);V(smoker1);else if(case=1)V(tobacco);V(match);V(smoker2);else if(cass=2)V(paper);V(match);V(smoker3);void smoker1()while(1)P(smoker1);V(match

16、);P(tobacco);P(paper);P(match);/吸煙V(seller)void smoker2()while(1)P(smoker2);V(paper);P(tobacco);P(paper);P(match);/吸煙V(seller)void smoker3()while(1)P(smoker3);V(tobacco);P(tobacco);P(paper);P(match);/吸煙V(seller)5 面包師問(wèn)題,1種解法;銀行問(wèn)題某銀行有人民幣儲(chǔ)蓄業(yè)務(wù),由n個(gè)柜員負(fù)責(zé)。每個(gè)顧客進(jìn)入銀行后先取一個(gè)號(hào),并且等著叫號(hào)。當(dāng)一個(gè)柜員人員空閑下來(lái),就叫下一個(gè)號(hào)。試用PV操作編寫柜員人

17、員和顧客進(jìn)程的程序。分析思想:1) 分成兩部分進(jìn)程,柜員進(jìn)程和顧客進(jìn)程2) 顧客進(jìn)門后P信息量,相當(dāng)于進(jìn)入等待隊(duì)列。3) 柜員間互斥。當(dāng)柜員空閑時(shí),進(jìn)入互斥操作部分,放入一個(gè)等待的顧客,推出互斥操作。4) 設(shè)置柜員狀態(tài)變量,空閑為1,忙碌為0,顧客進(jìn)入后掃描狀態(tài)變量,找到空閑的柜員后過(guò)去辦理業(yè)務(wù)。當(dāng)顧客掃描空閑柜員的時(shí)候互斥。雖然這樣能保證顧客到空閑的柜員處辦理業(yè)務(wù),但不能保證他所去的柜員是叫他號(hào)的柜員。5) 需要考慮當(dāng)沒(méi)有顧客,但所有柜員進(jìn)程都啟動(dòng)的時(shí)候,柜員需要等待顧客的到來(lái)信息量:ClientQueue:=0 記錄顧客等待的隊(duì)列Clerkmutex:=1 柜員的互斥信息量Clientmu

18、tex:=1 顧客的互斥信息量Customer:=0 記錄提供給柜員可以辦理業(yè)務(wù)的客戶的數(shù)量,同時(shí)在客戶少于n時(shí)表示等待客戶的柜員的數(shù)量。程序:#typedef int semaphoresemaphore ClientQueue=0;semaphore Customer=0;semaphore Clerkmutex=1;semaphore Clientmutex=1;int ClerkStaten;for(int i=0;i<n;i+)ClerkStatei=1;void Client()P(ClientQueue);/每個(gè)顧客不是循環(huán)不停的辦理業(yè)務(wù),所以認(rèn)為不需要循環(huán)語(yǔ)句P(Clie

19、ntmutex);/掃描柜員期間互斥,以防與后面的顧客同時(shí)掃描到同一柜員V(Customer);/表示提供一個(gè)可供服務(wù)的客戶for(int i=0;i<n;i+)/掃描到第一個(gè)空閑的柜員后推出,即到該柜員出辦理if(ClerkStatei=1)ClerkStatei=0;break;V(Clientmutex);到第i個(gè)柜員處辦理業(yè)務(wù);void Clerk(int i)while(1)P(mutex);ClerkStatei=1;V(ClientQueue)V(mutex);P(Customer);/等待可供服務(wù)的客戶,如果客戶數(shù)量少于n,柜員在此排隊(duì)辦理業(yè)務(wù);6 類似面包師的理發(fā)師問(wèn)題

20、,可以推廣到多個(gè)理發(fā)師問(wèn)題;愛(ài)睡覺(jué)的理發(fā)師問(wèn)題Dijkstra,1968一個(gè)理發(fā)店有兩間相連的屋子,一間是私室,里面有一把理發(fā)椅,另一件是等候室,有一個(gè)滑動(dòng)門和N把椅子。理發(fā)師忙的時(shí)候,通向私室的門被關(guān)閉,新來(lái)的顧客找一把空椅子坐下,如果椅子都被占滿了,則顧客只好離去。如果沒(méi)有顧客,則理發(fā)師在理發(fā)椅上睡覺(jué),并打開通向私室的門。理發(fā)師睡覺(jué)時(shí),顧客可以叫醒他理發(fā)。請(qǐng)編寫理發(fā)師和顧客的程序,正確實(shí)現(xiàn)同步互斥問(wèn)題。分析思想:1) 當(dāng)沒(méi)有顧客,理發(fā)師休息,當(dāng)有顧客,理發(fā)師對(duì)最先來(lái)的顧客理發(fā)。2) 顧客進(jìn)入理發(fā)師有3種狀況:1、理發(fā)店沒(méi)人,直接進(jìn)里屋理發(fā),2、理發(fā)店有人,找個(gè)凳子等,3、理發(fā)店有人,n個(gè)凳

21、子被占滿,顧客離開。3) 理發(fā)師給一個(gè)顧客理完發(fā)后,打開滑門,即V操作信息量,顧客進(jìn)入后關(guān)上滑門,即P操作信息量,在理發(fā)過(guò)程中,顧客是互斥的4) 一個(gè)顧客進(jìn)入,即等待室中的凳子空出一把。每個(gè)顧客進(jìn)入理發(fā)店需要判斷是否n把椅子滿,即判斷變量chair=n or not。如果椅子滿顧客進(jìn)程需要退出。信息量:barber:=1 理發(fā)師的信息量,同時(shí)也是顧客的排隊(duì)度隊(duì)列Customer:=0 顧客的數(shù)量mutex:=1 顧客互斥信息量程序:#define int semaphoresemaphore waiting=0;semaphore cutHair=0;semaphore mutex=1;int

22、 count=0;void Customer()P(mutex);if(count>n)V(mutex);return false;else count+;V(mutex);if(count>1)/got a chair;P(waiting);/等待V(cutHair);/顧客叫醒理發(fā)師理發(fā);P(mutex);count-;if(count>0)V(waiting);V(mutex);void Barber()while(true)P(cutHair);/等待顧客理發(fā);解法二:加入了占用椅子資源,顧客付錢理發(fā)師收錢的同步過(guò)程。from 計(jì)算機(jī)操作系統(tǒng)課程及考研輔導(dǎo)semaph

23、ore mutex=1,empty=1;semaphore chair=n;semaphore full=0;semaphore cut=0,payment=0,receipt=0;int count=0;guest()P(mutex);if(count>n)V(mutex);return false;elsecount+;V(mutex);if(count>1)P(chair);/sit on a chairP(empty);/on queueV(chair);/get up from a chairelse P(empty);sit on the barbers chair;V

24、(full);P(cut);pay;V(payment);P(receipt);get up from barbers chair;V(empty);P(mutex);count-;V(mutex);exit shop;barber()while(1)P(full);cut hair;V(cut);P(payment);accept payment;V(receipt);/V(empty);二者有一即可7 狒狒過(guò)河問(wèn)題;巴拿馬運(yùn)河問(wèn)題巴拿馬運(yùn)河建在太平洋和大西洋之間,由于太平洋和大西洋水面高度不同,有巨大落差,所以運(yùn)河中建有T(T2)級(jí)船閘,并且只能允許單向通行,船閘依次編號(hào)為1,2,T,由大

25、西洋來(lái)的船需要經(jīng)過(guò)船閘T,T-1.,2,1通過(guò)運(yùn)河到達(dá)太平洋,由太平洋來(lái)的船需要經(jīng)由船閘1,2,T-1,T通過(guò)運(yùn)河到達(dá)大西洋。使用P,V操作正確解決大西洋和太平洋的船只通航問(wèn)題。分析思想:1) 巴拿馬運(yùn)河大西洋,太平洋兩個(gè)方向的船設(shè)置為兩個(gè)進(jìn)程。Atlantic(),Pacific();2) 當(dāng)一側(cè)船來(lái)到運(yùn)河,如果另一側(cè)船在過(guò)河,則等待;如果自己方船在過(guò)河,同時(shí)己方船只的總過(guò)河船數(shù)小于T,則過(guò)河;如果己方船在過(guò)河,同時(shí)己方船只過(guò)河總數(shù)大于T,則等待。3) 為了避免饑餓和死鎖,必須控制一次過(guò)河的船數(shù)T。信息量:A,P:=1 代表兩邊的船只是否允許通過(guò)的閘門。mutex1,mutex2:=1 互斥

26、信息量程序:semaphore A=1;semaphore P=1;semaphore mutex1=1;semaphore mutex2=1;int PshipSum=0,AshipSum=0;int PshipCur=0,AshipCur=0;Pacific()P(P);P(mutex1);PshipSum+; PshipCur+;if(PshipCur=1)P(A);if(PshipSum=T)P(P);V(P);V(mutex1)過(guò)河;P(mutex1);PshipCur-;if(PshipCur=0)V(A);PshipSum=0;if(PshipSum=T)V(P);V(mutex

27、1);Atlantic()P(A);P(mutex2);AshipSum+; AshipCur+;if(AshipCur=1)P(P);if(AshipSum=T)P(A);V(A);V(mutex2);過(guò)河;P(mutex2);AshipCur-;if(AshipCur=0)V(P);AshipSum=0;if(AshipSum=T)V(A);V(mutex2);8 另類P,V問(wèn)題。紅客黑客過(guò)河問(wèn)題有紅客和黑客兩組人員需要過(guò)河。河上有船,但是每次只能乘坐4人,且每次乘客滿員時(shí)才能開船,到河對(duì)岸后空船返回。但船上乘客不能同時(shí)有3個(gè)紅客 、1個(gè)黑客 或者 1個(gè)紅客 、 3個(gè)黑客的組合。(其他組合

28、安全)。請(qǐng)編寫程序,用pv操作解決紅客、黑客過(guò)河的問(wèn)題。并說(shuō)明所設(shè)置的信號(hào)量及其初值。分析思想:(from 計(jì)算機(jī)科學(xué)論壇-北大必考題,PV經(jīng)典案例分析)對(duì)同步與互斥的分析: 同步關(guān)系:1. 滿員才能開船;2. 紅黑客滿足一定的組合規(guī)則,才能有四人上船 互斥關(guān)系:紅黑客對(duì)請(qǐng)求上船的控制 顯然,此題難點(diǎn)在對(duì)同步關(guān)系的解決。 下面給出所寫程序的算法思想: Red():每個(gè)紅客到來(lái)請(qǐng)求上船時(shí)執(zhí)行該程序; 1. 請(qǐng)求進(jìn)入臨界區(qū); 2. 首先檢查本人的到來(lái)是否滿足上船的組合(即4個(gè)紅客或2個(gè)紅客與2個(gè)黑客); 3. 如果滿足2個(gè)紅客和2和黑客的組合,則看是否有船可上,有的話該紅客上船并通知另外1個(gè)紅客和

29、2個(gè)黑客上船,然后通知船滿員,并退出臨界區(qū); 4. 如果滿足4個(gè)紅客的組合,則看是否有船可上,有的話該紅客上船并通知另外3個(gè)紅客上船,然后通知船滿員,并退出臨界區(qū); 5. 不符合上船的組合,則先退出臨界區(qū),然后在信號(hào)量S_red上等待,直到當(dāng)條件滿足時(shí),有人通知其上船。 6. 完畢。 Black():每個(gè)黑客到來(lái)請(qǐng)求上船時(shí)執(zhí)行該程序,其算法與Red()完全一致; Boat():河上的船執(zhí)行該程序; 1.等待滿員后開船過(guò)河; 2.空船返回,通知可以上船了,轉(zhuǎn)而執(zhí)行1。信息量:mutex:=1S_red,S_black:=0ready:=1 船是否靠岸board:=0上船shipping:=0 程

30、序:semaphore mutex=1;semaphore S_red=0;semaphore S_black=0;semaphore board=0;semaphore shipping=0;int RedCount=0,BlackCount=0;Red()P(mutex);RedCount+;if(RedCount>1 && BlackCount>1)P(ready);V(S_red);V(S_black);V(S_black);上船;V(board);P(shipping);RedCount-=2;BlackCount-=2;開船;V(mutex);else

31、if(RedCount=4)P(ready);V(S_red);V(S_red);V(S_red);上船;V(board);P(shipping);RedCount-=4;開船;V(mutex);else V(mutex);P(S_red);上船;開船;Black()P(mutex);BlackCount+;if(RedCount>1 && BlackCount>1)P(ready);V(S_black);V(S_red);V(S_red);上船;V(board);P(shipping);RedCount-=2;BlackCount-=2;開船;V(mutex);else if(BlackCount=4)P(ready);V(S_black);V(S_black);V(S_black);上船;V(board);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論