和尚取水问题
寺庙里有许多老和尚和小和尚,一口水井和一个水缸。小和尚负责打水满足老和尚的饮水需求。水缸容积10桶水,水井每次只容一个桶取水,桶总数3个,水缸每次仅容一个桶取、入水。
设水缸初始状态是空的,试设置信号量并利用P、V操作实现和尚间的同步。
信号量定义
v1=1 小和尚从井里提水
v2=1 老和尚从缸里取水,小和尚往缸里倒水
amount=3 水桶数量
full=0 水缸里有几桶水
empty=10 水缸里还能放几桶水
PV操作流程
小和尚(){
p(empty)
p(amount)
p(v1)
从水井打水
v(v1)
p(v2)
往缸里倒水
v(v2)
v(amount)
v(full)
}
老和尚(){
p(full)
p(amount)
p(v2)
从缸中取水
v(v2)
v(amount)
v(empty)
}
PS:学生小白刚开始学,有什么问题希望大家能提出来。