操作系统实验三:用PV操作实现司机售票员进程同步(C语言实现)

操作系统实验三:⽤PV操作实现司机售票员进程同步(C语⾔实现)
代码如下:
driver_spy.cpp
#include<stdio.h>
#include<stdlib.h>
int S1 =0, S2 =1, sum =0;
char name[10]="null";
void driver(int s1,int s2,char name[]);
void busman(int s1,int s2,char name[]);
void p(int s,char name[]);
void v(int s,char name[]);
足摩
void addrecord();
int main(){
driver(S1, S2,"driver");
busman(S1, S2,"busman");
李椿萱return0;
}
void driver(int s1,int s2,char name[])
{
printf("离站开车\n");
printf("正常⾏车\n");
printf("到站停车\n");
v(s2,"driver");//汽车到站,唤醒售票员开车门
p(s1,"driver");//初始S1=0,P(S1)后S1=-1,司机⽆法启动车辆,需等待售票员执⾏关门操作(V(S1)),需售票员关好门,唤醒司机,司机才能启动车辆
}
void busman(int s1,int s2,char name[])
{
p(s2,"busman");//售票员打开车门,需S2>0时。初始S2=0,售票员不能打开车门,需等司机执⾏V(S2)操作,唤醒售票员开门,售票员才能打开车门printf("开车门\n");
printf("关车门\n");
v(s1,"busman");//售票员已关好车门,执⾏V(S1),唤醒司机启动车辆
printf("售票\n");
淡马锡模式}
void p(int s,char name[]){
s = s-1;
while(1){
中国节能投资公司if( s >=0){
if(name =="driver"){
printf("P(S1)操作\n收到开车信号\n");
break;
}
if(name =="busman"){
printf("P(S2)操作 - 收到开车门信号\n");
break;
}
break;中小投资
}
if(s <0)
if(name =="driver"){
printf("P(S1)操作 - 司机进程阻塞,等待售票员进程发出开车信号\n");
busman(s, S2,"busman");
}
if(name =="busman"){
printf("P(S2)操作 - 收到开车门信号\n"); driver(S1, s,"driver");
}
}
}
void v(int s,char name[]){
s = s+1;
while(1){
if( s >0){
if(name ="driver")
printf("V(S2)操作 - 发出开车门信号\n"); break;
}
if(s <=0)
if(name =="busman"){
sum++;
printf("V(S1)操作 - 发出开车信号\n售票\n");    sum++;
if(sum>2)//执⾏两次循环
exit(-1);
driver(s, S2,"driver");
}
质点运动学}
}
运⾏结果如图:

本文发布于:2024-09-22 19:38:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/257870.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:售票员   司机   开车   操作   唤醒
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议