假設乙個系統有三個抽菸者和乙個**者程序。每個抽菸者不停地捲菸並抽掉它,但是要捲起並抽掉一支煙,抽菸者需要有三種材料:菸草、紙和膠水。三個抽菸者中,第乙個擁有菸草、第二個擁有紙、第三個擁有膠水。**者程序無限地提供三種材料,**者每次將兩種材料放桌子上,擁有剩下那種材料的抽菸者卷一根煙並抽掉它,並給**者程序乙個訊號告訴完成了,**者就會放另外兩種材料在桌上。輪流讓三個抽菸者抽菸
// 桌上組合一的數量
semaphore offer2 =0;
// 桌上組合二的數量
semaphore offer3 =0;
// 桌上組合三的數量
semaphore finish =0;
// 抽菸是否完成
int i =0;
// 用於實現「輪流抽菸」
**者**:
provider()
else
if(i ==1)
else
if(i ==2)
i =(i +1)
%3;p
(finish);}
}
smoker1()
}
smoker2()
}
smoker3()
}
吸菸者問題
吸菸者問題是作業系統中p v操作部分的經典同步問題,深刻理解吸菸者問題對我們學習作業系統有著很大的益處!1.問題描述 三個吸菸者在乙個房間內,還有乙個香菸 者。為了製造並抽掉香菸,每個吸菸者需要三樣東西 菸草 紙和火柴,者有豐富貨物提供。三個吸菸者中,第乙個有自己的菸草,第二個有自己的紙,第三個有自...
Coding 吸菸者模型
併發程式設計經典問題之吸菸者。本文簡單介紹了問題模型,並提供了一種 python3 的解決方式。問題模型 問題拓展 問題分析 talk is cheap,show me codefrom threading import thread,condition,lock,current thread fr...
作業系統 吸菸者問題
這次介紹的幾個ipc inter process communication 程序間的通訊問題,加上上篇部落格介紹的生產者 消費者問題及其變形,都是非常經典的ipc問題,在王道老師講解的時候,彈幕一片 秒啊 666 這幾個問題的解決方案也著實讓人著迷,當我帶著懷疑去驗證時候,又有一種豁然開朗的感覺,...