在生產(chǎn)者和消費(fèi)者問題中,如果將P操作位置互換,會(huì)產(chǎn)生什么結(jié)果
2、首先生產(chǎn)者有資格進(jìn)行生產(chǎn)(即緩沖池中不滿時(shí))他才能放入。假設(shè)你讓P(matnet)在前面的話,可能緩沖池是無進(jìn)程修改的,可是后面P(empty)時(shí)若緩沖池是滿的,就沒法再放,它就在等待消費(fèi)者消費(fèi)V(empty),進(jìn)入阻塞態(tài)。
3、)signal可逆原因:對(duì)生產(chǎn)者,因?yàn)橐呀?jīng)生產(chǎn)完了,所以先退出mutex臨界區(qū)或者或者對(duì)full的數(shù)目加一,都不會(huì)產(chǎn)生影響。
4、此時(shí)進(jìn)程不能正常結(jié)束,生產(chǎn)者也不能釋放自己現(xiàn)在占用的臨界區(qū)。同時(shí)消費(fèi)者不能獲取訪問臨界區(qū)的權(quán)限,這樣就造成了兩個(gè)進(jìn)程出現(xiàn)死鎖的情況。同理:消費(fèi)者進(jìn)程中的 wait(full); wait(matex); 也不能互換。
5、生產(chǎn)者缺少signal(full),則全部消費(fèi)者可能在緩沖區(qū)非空的時(shí)候阻塞 當(dāng)緩沖區(qū)變空時(shí),某個(gè)消費(fèi)者鎖上mutex然后等待full,此時(shí)生產(chǎn)者毀在down(mutex)時(shí)阻塞,無法填充緩沖區(qū)。
6、p原語對(duì)資源進(jìn)行占有,V原語對(duì)資源進(jìn)行釋放 缺少empty資源信號(hào)量,那么只有互斥信號(hào)量。