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