PV操作之读者写者问题:“南开大学和天津大学之前有一条弯曲的路”

博客详细介绍了如何解决南开大学和天津大学之间的弯曲道路问题,利用PV操作实现自行车的有序通行。讨论了原题及题目变形的解题思路和步骤,强调了在不同场景下同类进程的互斥和异类进程的同步原则。
摘要由CSDN通过智能技术生成

原题描述

南开大学和天津大学之间有一条弯曲的路,同一方向每次只允许一辆自行车通过,中间有小的安全岛M(同时允许两辆车通过),可供相向行驶的两辆小车错车,如下图所示。设计算法并使用P,V操作实现。
道路安全岛

解题思路

  1. 入口T和N分别设置信号量T2N,N2T,初值均为1,保证每次只有一辆车进入小路;
  2. 定义信号量K,L,初值均为1。由于下一段路可能有相向而来的小车,得在M处会车,所以小车在通过M前要检查下一段路是否有来车,即申请下一段路的使用权。

解题步骤(PV操作)

Semaphore T2N = 1;               // 从T到N的互斥信号量
Semaphore N2T = 1;               // 从N到T的互斥信号量
Semaphore K = 1;                 // 通过K段路的互斥信号量
Semaphore L = 1;                 // 通过L段路的互斥信号量
Bike T2N{
                           //从T(天津大学)到N(南开大学)的小车
	while(1){
   
    	P(T2N);                  //入小路前对T口上锁
    		P(L)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值