P-V操作解决互斥问题
- 实质是实现对临界区的户斥访问
允许最多一个进程处于临界区
- 应用处理过程
进入临界区之前先执行P操作;(可能阻塞当前进程)
离开临界区之后在执行V操作;(可能唤醒某个进程)
S的初值设置合理
实现进程的互斥
- 应用过程
先设定合适的S初值
- 例子:3个进程Pa,Pb,Pc。CSa,b,c是临界区。
main()
{
/* 设置mutex*/
int mutex = 1;
Cobegin //并发
Pa();
Pb();
Pc();
Coend//并发结束
}
分析:Pa,Pb,Pc三者互斥过程以及mutex值的变化
-
mutex = 1