第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

根據(jù)記錄型信號(hào)量的特點(diǎn),生產(chǎn)者進(jìn)程怎么被阻塞怎么被喚醒?

根據(jù)記錄型信號(hào)量的特點(diǎn),生產(chǎn)者進(jìn)程怎么被阻塞怎么被喚醒?

C
哆啦的時(shí)光機(jī) 2023-03-03 17:13:35
Var mutex,empty,full:semaphore:=1,n,0;buffer:array[0,...,n-1]of item;in,out:integer:=0,0;beginparbeginproceducer:beginrepeat...producer an item nextp;...wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1)mod n;signal(mutex);signal(full);until false;endconsumer:beginrepeatwait(full);wait(mutex);nextc:=buffer(out);out:=(out+1)mod n;signal(mutex);signal(empty);consumer the item in nextc;until false;endparendend我尤其不明白nextc是什么類型,只能存放一個(gè)元素還是一個(gè)隊(duì)列?
查看完整描述

1 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

Var mutex,empty,full:semaphore:=1,n,0; // 定義三個(gè)信號(hào)量
buffer:array[0,...,n-1]of item; // 定義緩沖池,容量為n
in,out:integer:=0,0;
begin
parbegin
proceducer:begin // 生產(chǎn)者
repeat
.
.
.
producer an item nextp; // 生產(chǎn)一個(gè)產(chǎn)品
.
.
.
wait(empty); // 申請(qǐng)一個(gè)空緩沖區(qū)
wait(mutex); // 申請(qǐng)緩沖池的使用權(quán)
buffer(in):=nextp; // 將產(chǎn)品放入緩沖池中
in:=(in+1)mod n; // 下一個(gè)空緩沖區(qū)地址
signal(mutex); //釋放緩沖池使用權(quán)
signal(full); // 釋放一個(gè)滿緩沖區(qū)
until false;
end
consumer:begin
repeat
wait(full);
wait(mutex);
nextc:=buffer(out);
out:=(out+1)mod n;
signal(mutex);
signal(empty);
consumer the item in nextc;
until false;
end
parend
end

nextp 應(yīng)該是next proceducer的意思吧
nextc 應(yīng)該是next consumer
貌似也不是什么變量,屬于語(yǔ)言描述而已
下面的消費(fèi)者也是差不多的。

至于生產(chǎn)者進(jìn)程如何被阻塞和喚醒,因?yàn)槌绦蛑杏幸粋€(gè) repeat語(yǔ)句,所以進(jìn)程不斷測(cè)試緩沖池是否有空緩沖區(qū),以及緩沖池是否有其他進(jìn)程使用。若兩個(gè)條件不滿足,則進(jìn)入阻塞隊(duì)列等待。若某一時(shí)刻兩個(gè)條件都能滿足,則能喚醒該進(jìn)程。


查看完整回答
反對(duì) 回復(fù) 2023-03-06
  • 1 回答
  • 0 關(guān)注
  • 109 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)