Итак, я пытаюсь реализовать алгоритм синхронизации трафика в c, но я не знаю, с чего начать.Правила следующие:
- На перекрестке четыре светофора, по одному для каждой из северной, южной, восточной и западной дорог.Только один сигнал светофора может гореть одновременно;оставшиеся огни будут красными.
- Если автомобиль находится в левой полосе, он может поворачивать только влево или идти прямо.
- Автомобиль, поворачивающий направо, должен находиться в правой полосе.
- Автомобиль, едущий прямо или поворачивающий направо, не может пересечь перекресток, если соответствующий светофор красного цвета и должен ждать, пока светофор станет зеленым.Светофор для движения прямо или поворота направо становится зеленым одновременно.
- Автомобиль может повернуть налево на красный свет, если впереди нет автомобиля, ожидающего зеленого светофора.
- Светофор остается зеленым до тех пор, пока 5 ожидающих автомобилей с каждой полосы не пересекут перекресток или повернут направоЕсли на каждой полосе движения меньше 5 ожидающих автомобилей, светофор становится красным, как только все ожидающие автомобили пересекают перекресток или поворачивают направо.
Кроме того, есть четыре дороги на север, юго-востоки запад, и машина может выбрать движение прямо влево или вправо.Входом будет автомобиль и его источник, пункт назначения и полоса движения.например, car1 (с севера на юг, слева);
Мой вопрос: как мне поступить, чтобы реализовать это? Должен ли я использовать один поток для светофора или 4 потока для каждого? Будет ли полезен семафор илипеременная условия или мьютексы или просто pthreads?Или может быть что-то еще должно быть отдельные темы для автомобилей, а?как передать управление от одного сигнала к другому?