問題描述
理發店理有一位理發師
The P
int waiting=
int chairs=n
semaphore customers=
cobegin
barber()
begin
while(TRUE);//理完一人
P(cutomers);//若無顧客
P(mutex);//進程互斥
waiting:=waiting–
V(barbers);//理發師去為一個顧客理發
V(mutex);//開放臨界區
cut
end
customer()
begin
P(mutex);//進程互斥
if(waiting)
begin
waiting:=waiting+
V(customers);//必要的話喚醒理發師
V(mutex);//開放臨界區
P(barbers);//無理發師
get
end
else
V(mutex);//人滿了
end
coend
From:http://tw.wingwit.com/Article/program/czxt/201311/24187.html