整形信号量为S,所说的P、V操作wait(S)和signal(S)
wait(S):{
S->value–;
if(S->value < 0)block(S->list);
}
signal(S):{
S->value++;
if(S->value <= 0)wakeup(S->list);
}
执行序列:
S1 C=42
S2 Y=C-Y=42-45=-3
S3 V(T) T=1
S4 C=Y-N=-3-47=-50
S5 P(E) E=-1 block(S)
F1 N=35
F2 C=N+C=35+(-50)=-15
F3 P(T) T=0
F4 N=C+Y=-15+(-3)=-18
F5 V(E) E=0 wakeup(S)
S6 N=Y+C=-3+(-15)=-18
F6 Y=N+C=-18+(-15)=-33