上一小节讲了PV信号量的概念,还有进程同步、异步的概念,现在我们用实际的问题来使用PV信号量。

如下图,公共汽车上,司机和售票员各司其职。司机需要等售票员关好门之后才能启动车,售票员只有等司机停好车后才能开车门,两者必须配合默契,协调一致。

2.5 CPU管理--进程同步经典问题-司机和售票员问题

设置信号量Start来控制是否可以让司机启动汽车,初值为0;

设置信号量Open控制是否可以让售票员开启车门,初值为0;

这表示当前状态是汽车未启动且车门已经打开,不允许司机启动汽车,也不允许售票员开车门。

相关代码如下:

Seamphore Start,Open;

Start.value=0,Open.value=0

Cobegin

Process 司机()

{

    While(1)

   {

        P(Start)

        启动汽车

        正常行驶

        到站停车

        V(Open)

   }

}

Process 售票员()

{

    While(1)

   {

        关闭车门

        V(Start)

        售票

        P(Open)

        开车门

    }

}

相关文章:

  • 2022-12-23
  • 2021-09-23
  • 2022-12-23
  • 2022-02-06
  • 2021-05-13
  • 2021-07-29
  • 2021-12-26
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-04-12
  • 2022-01-10
相关资源
相似解决方案