(1) Driver 和 Busman 这两个活动之间是同步关系。

(2) 下面是使用信号量实现的程序段:

from threading import Semaphore

s1 = Semaphore(1) # 初始值为 1,表示允许司机启动汽车
s2 = Semaphore(0) # 初始值为 0,表示不允许售票员开门

def Driver():
    while True:
        s2.acquire() # 等待售票员开门
        # 执行启动汽车、正常行车、到站停车的操作
        s1.release() # 允许下一次启动汽车

def Busman():
    while True:
        # 执行关车门、售票、开车门的操作
        s2.release() # 允许司机启动汽车
        s1.acquire() # 等待司机启动汽车

# 主过程 main 调用 Driver 和 Busman 过程
if __name__ == '__main__':
    import threading
    threading.Thread(target=Driver).start() # 启动司机线程
    threading.Thread(target=Busman).start() # 启动售票员线程

在程序中,使用了两个信号量 s1 和 s2,分别表示是否允许司机启动汽车和是否允许售票员开门。在 Driver 过程中,先等待售票员开门(s2.acquire()),然后执行启动汽车、正常行车、到站停车的操作,最后释放 s1 信号量,允许下一次启动汽车。在 Busman 过程中,先执行关车门、售票、开车门的操作,然后释放 s2 信号量,允许司机启动汽车,最后等待司机启动汽车(s1.acquire())。在主过程 main 中,使用 threading.Thread() 方法启动两个线程分别执行 Driver 和 Busman 过程

13 设公共汽车上司机和售票员的活动分别为:Driver 启动汽车;正常行车;到站停车;Busman 关车门;售票;开车门;在公共汽车不断地到站停车、启动行驶过程中这两个活动之间的关系为:售票员关车门后向司机发开车信号司机接到开车信号后启动车辆在汽车正常行驶过程中售票员售票到站时司机停车售票员在车停后开车门让乘客上下车。1 Driver 和 Busman 这两个活动之间是互斥关系还是同步关系?2若

原文地址: https://www.cveoy.top/t/topic/eGyj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录