实现互斥的四个原则主要特点空闲让进忙则等待有限等待让权等待软件方法单标志法❌turn = 1/0双标志先检查法❌flag[i] = true/flase双标志后检查法❌❌flag[i] = true/flasePerterson法❌turn = 1/0 flag[i] = true/flase硬件方法关中断不适用多处理机 关中断权限交给用户实施不明智的 TS方法❌硬件指令实现检查与设置成为一个原子操作Swap方法❌硬件指令实现检查与设置成为一个原子操作互斥锁互斥锁❌acquire() release()信号量整形信号量❌wait()---P signal()---V记录型信号量wait()---P signal()---V value:资源数目 vector<>L:暂存需要资源的队列 对于软件方法由这样的记忆和理解方法: 你和同学需要用浴室: 单标志法: 到我了吗? while(turn!=0); 双标志先检查法: 你要用吗?你不用我就用了! while(flag[1]);flag[0]=true 双标志后检查法: 我想用!你要用吗(你要用我就等等) flag[0]=true while(flag[1]); Perterson法: 我想用!轮到你了!什么时候对方不用并且轮到我? flag[0]=true turn=1, while(flag[1]&&turn=1);