有一个没有限量的大盘子,爸爸只往里面放苹果,妈妈只往里面放桔子,儿子只拿苹果吃,女儿只拿桔子吃,请写出能描述4个人行为的同步方案。
Program father:
begin:
repeat:
produce an apple
wait(mutex)
Buffer(in) = apple
in := in + 1
signal(apple)
signal(mutex)
until false
end
Program mother:
begin:
repeat:
produce an orange
wait(mutex)
Buffer(in) = orange
in := in + 1
signal(orange)
signal(mutex)
until false
end
Program son:
begin:
repeat:
wait(apple)
wait(wmutex)
if (Buffer(out) == apple)
s = Buffer(out)
out := out + 1
else
signal(apple)
signal(wmutex)
until false
end
Program daughter:
begin:
repeat:
wait(orange)
wait(wmutex)
if (Buffer(out) == orange)
s = Buffer(out)
out := out + 1
else
signal(orange)
signal(wmutex)
until false
end