程序员梓杨 2022-12-18 16:08 采纳率: 0%
浏览 42
已结题

现在求一份用进程同步方法解决售票员与乘客问题代码

求一份代码,操作系统题目
用进程同步方法解决售票员与乘客问题
有代码就好!价格有待商议

  • 写回答

4条回答 默认 最新

  • AllenGd 大数据领域优质创作者 2022-12-18 16:15
    关注
    #include<iostream>
    using namespace std;
    int spy=1, sj=0;  //信号量的定义,spy是售票员的私有信号量,sj是司机的私有信号量。
    #define SIZE 5    //定义车上最多能坐的人数。
    int n = SIZE;
    char ck;          //乘客上下车的操作变量。
    int p1();         //司机的操作流程。
    int p2();         //售票员的操作流程。
    int main()
    {
        cout << "键入a表示乘客上车,键入d表示乘客下车." << endl;
        cout << "键入s表示注销进程." << endl;
        cout << "键入f表示乘客上下车过程结束." << endl << endl << endl;
        p1();        
        return 0;
    }
    int p1()         //司机的执行过程
    {
        sj--;//相当于p操作。
        if (sj == 0)
        {
     
            cout << "汽车启动准备离站......" << endl;
            cout << "汽车运行中......" << endl;
            cout << "汽车到站!" << endl;
            cout << "汽车停!" << endl;
        spy++;//相当于v操作。
        }
        else sj++;
        p2();
        return 0;
    }
     
    int p2()    //售票员的执行过程
    {
        spy--;//相当于p操作。
        if (spy==0)
        {
            cout << "售票员打开车门......" << endl;
            cout << "请进行乘客上下车操作!" << endl;
            while (1)
            {
                cin >> ck;
                if ((ck == 'a') && (n > 0)) {n--;cout << "上一个乘客." << endl;continue;};
                if ((ck == 'd') && (n < SIZE)) {n++;cout << "下一个乘客." << endl;continue;};
                if (ck == 'f') {break;};
                if (ck == 's') {return 0;};
                if (n <= 0) {cout << "车上座位已满,不能再上乘客了!" << endl;continue;};
                if (n >= SIZE) {cout << "车上乘客已经都下完了!" << endl;continue;};
            }
            cout << "现在关闭车门!" << endl;
        }
        sj++;  //相当于v操作
        p1();
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表