一、飞机票问题
Var A : ARRAY[1..m] of integer;
mutex : semaphore;
mutex:= 1;
cobegin
process Pi
var Xi:integer;
begin
<span style="white-space:pre"> </span>L1:
按旅客定票要求找到A[j];
P(mutex);
Xi := A[j];
if Xi>=1 then
begin
Xi:=Xi-1;A[j]:=Xi;
V(mutex); {输出一张票};
end;
else begin
V(mutex); {输出“票已售完”};
end;
goto L1;
end;
coend
二、理发师睡眠问题
理发店理有一位理发师、一把理发椅和n把供等候理发的顾客坐的椅子
如果没有顾客,理发师便在理发椅上睡觉
一个顾客到来时,它必须叫醒理发师
如果理发师正在理发时又有顾客来到,则如果有空椅子可坐,就坐下来等待,否则就离开
<pre name="code" class="plain">int waiting=0; //等候理发顾客坐的椅子数
int CHAIRS=N; //为顾客准备的椅子数
semaphore customers, barbers, mutex;
customers=0; barbers=0; mutex=1;
process barber( ) {
while(true) {
P(custom