博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
城市道路十字路口的通行规则是“红灯停,绿灯行”,请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为
阅读量:2433 次
发布时间:2019-05-10

本文共 1351 字,大约阅读时间需要 4 分钟。

城市道路十字路口的通行规则是“红灯停,绿灯行”,请用信号量和PV操作描述交通信号灯和汽车通过十字路口的同步行为

1)识别那些可以作为进程

信号灯,汽车

2)其次识临界资源,即进程共享的事务

信号灯,汽车

3)定义数据结构

定义共变和私有变量:

Int  inter=10;//信号灯延长时间Int  number=0;//等待车辆数目

4)定义进程操作

4.1交通信号灯控制进程操作:

交通信号灯延时10秒

交通灯颜色切换为绿色

唤醒所有等待红灯信号的车辆使其同行

重置延时时间为10秒

绿灯信号延时十秒

绿灯颜色切换为红色

重置延时时间为10秒

 4.2汽车进程操作

绿灯则通行

否则就使等红灯的车辆数目加一

执行等待动作

红灯变为绿色,结束等待,行车

5)操作进程伪代码实现

交通和信号灯控制进程伪代码实现

int Red = 0;int Green = 1;semaphore mutex = 1, wait = 0;mutex,number//互斥访问信号量,车辆等待信号量inter=10,number=0,Light=Red;//信号灯延长时间、车辆等待数目、信号灯颜色begin/*信号灯进程操作实现*/Process lightControl(){    While(inter)//使信号灯延时10秒    {              Inter--;        }    Light=Green;//信号灯切换为绿色    P(mutex);    While(number--)V(wait);//唤醒所有等待红灯信号的车辆使其同行        V(mutex);    Inter=10;//重新设置延时时间    While(inter)//使绿灯延时10秒    {              Inter--;    }    Light=Red;//信号灯切换为红色    Inter=10;//重置延时时间}/*汽车进程操作实现1*/Process Car-i()//i=1,2,3…….{    P(mutex);    If(Light==Green)    {        通行;        V(mutex);    }    else    {        number++;//使等待红灯的车辆数目增加1        V(mutex);        P(wait);//执行等待动作        通行;//信号灯变为绿色,等待结束,行车    }}Coend/*汽车进程操作实现2完善版*/Process Car-i()//i=1,2,3…….{    While(1)    {        P(mutex);        If(Light==Green)        {            通行;            V(mutex);            break;        }        else        {           number++;//使等待红灯的车辆数目加1           V(mutex);           P(wait);//执行等待动作        }    }}

 

转载地址:http://vitmb.baihongyu.com/

你可能感兴趣的文章
丘仕达工作前给大家的礼物(转)
查看>>
JBuilder2005 下 jsp2.0 初体验(转)
查看>>
电信网技术(转)
查看>>
在Tomcat 配置Oracle 及DB2中创建Connection Pool(转)
查看>>
CDMA的相关国际标准及制定(转)
查看>>
J2ME技术在手机开发领域的优势和不足(转)
查看>>
Java中的cookie管理方案(4)-与J2ME结合(转)
查看>>
关于GSM系统中MSC之CP负荷过高处理的体会(转)
查看>>
网络技术:善用资源为无盘网络提速(转)
查看>>
Symbian 的一个应用的启动过程(转)
查看>>
symbian c++ 学习 2 数据类型及代码规范(转)
查看>>
Java中的cookie管理方案(1)-与J2ME结合(转)
查看>>
局域网:提高内网安全技术的十大策略(转)
查看>>
GSM网络跳频技术的应用(转)
查看>>
怎么样搜索新闻中的图片(转)
查看>>
Oracle 9I安装使用笔记(转)
查看>>
SQL开发--经典建议(转载)和大家分享
查看>>
网络上经典的DOS小命令(转)
查看>>
sqlserver中的一些技巧(转)
查看>>
简化Windows 2003域控制器密码(转)
查看>>