PV操作题目分析步骤:
- 关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。
- 整理思路。根据各进程的操作流程确定P、V操作的大致顺序。
- 设置信号量。并根据题目条件确定信号量初值。(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)
1、分析
允许单向行驶的十字路口,有由东向西和由南向北的车辆,每次只允许一辆车通过,分为两个进程,为互斥关系,需要互斥信号量mutex
2、伪代码
seamphore mutex = 1; //十字路口的互斥信号量
//从东到西
EastToWest() {
while(1) {
P(mutex); //申请通过
由东向西通过;
V(mutex); //释放
}
}
//从南到北
SouthToNorth() {
while(1) {
P(mutex); //申请通过
由南向b通过;
V(mutex); //释放
}
}