5辆汽车过隧道,隧进一次只能通过一辆汽车,每辆汽车通过时间不固定, 机动车通过时间3秒, 三轮车通过时间5秒, 畜力车通过时间10秒 5辆车分别是2辆机动车,2辆畜力车,1辆三轮车。 通过多线程模拟通过隧道的情况。 提示:Car ThreeCar CowCar
时间: 2024-09-12 08:03:26 浏览: 13
这是一个典型的并发控制问题,可以使用多线程来模拟五辆汽车依次通过隧道的过程。在这个场景中,我们可以创建三个线程分别代表机动车、三轮车和畜力车,每个线程都有自己的运行时间和等待策略。下面是一个简单的Python示例,使用了`threading`模块:
```python
import threading
import time
class Car(threading.Thread):
def __init__(self, name, tunnel_time):
threading.Thread.__init__(self)
self.name = name
self.tunnel_time = tunnel_time
def run(self):
print(f"{self.name} 开始进入隧道,等待时间 {self.tunnel_time} 秒")
time.sleep(self.tunnel_time)
print(f"{self.name} 离开隧道")
def main():
vehicle_list = [Car("机动车", 3), Car("三轮车", 5), Car("畜力车", 10)]
for car in vehicle_list:
car.start() # 启动所有车辆
for other_car in vehicle_list:
if car is not other_car and car.is_alive(): # 防止死锁
other_car.join() # 等待其他车先通过隧道再继续
if __name__ == "__main__":
main()
```
在这个例子中,我们首先初始化每个车辆类的对象,并设置它们的名称和通过隧道的时间。然后,主函数中启动所有车辆并等待每一辆车完成。通过这样的方式,我们可以模拟出五辆车按顺序通过隧道的情景。