经典同步互斥问题
信号量机制

turn=i——谦让

违反空闲让进

flag[i]——意愿 turn=i——谦让

flag[i]——意愿

flag[i]——意愿

  • 空闲让进;
  • 忙则等待;
  • 有限等待;
  • 让权等待

仍未遵循让权等待

违反空闲让进和有限等待

违反忙则等待

直接制约关系

间接制约关系

信号量:资源剩余数量

解决了让权等待

互斥信号量mutex,初值为 1

同步信号量 S,初值为 0

多对同步信号量 S,初值为 0

操作一气呵成

blockwakeup操作

wait(S)signal(S) 即:P(S)V(S)操作