这是一个采访问题,被问到并希望找到有效的解决方案。
问题
如图所示,考虑四个道路的交叉点。定义每条道路都有一个方向。您将如何解决该问题,以便改善交通状况和避免死锁。
例如:
半完整的解决方案
黄色标记的每个象限都有一个与之关联的信号量。
我想象的是一个两阶段协议(protocol),其中每辆车都会
但是,上述解决方案不是最佳解决方案,因为它会导致死锁。
我的问题是
更新
最佳答案
您的解决方案(如步骤2中所建议)无法避免死锁。
考虑一下这样的情况:在四条街道上有汽车要向左转。然后所有的汽车开始锁定不同的助剂:
从方向0开始,它锁定游丝2。
从方向1开始,它会锁定助熔剂3。
从方向2开始,它会锁定游丝0。
从方向3,它会锁定游丝1。
-死锁-
您可以通过四个方向共享一个互斥锁来避免死锁。
关于multithreading - 使用多线程算法的交通路口仿真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9404484/