Реализовать алгоритм синхронизации трафика в c с использованием потоков - PullRequest
0 голосов
/ 19 октября 2018

Итак, я пытаюсь реализовать алгоритм синхронизации трафика в c, но я не знаю, с чего начать.Правила следующие:

  1. На перекрестке четыре светофора, по одному для каждой из северной, южной, восточной и западной дорог.Только один сигнал светофора может гореть одновременно;оставшиеся огни будут красными.
  2. Если автомобиль находится в левой полосе, он может поворачивать только влево или идти прямо.
  3. Автомобиль, поворачивающий направо, должен находиться в правой полосе.
  4. Автомобиль, едущий прямо или поворачивающий направо, не может пересечь перекресток, если соответствующий светофор красного цвета и должен ждать, пока светофор станет зеленым.Светофор для движения прямо или поворота направо становится зеленым одновременно.
  5. Автомобиль может повернуть налево на красный свет, если впереди нет автомобиля, ожидающего зеленого светофора.
  6. Светофор остается зеленым до тех пор, пока 5 ожидающих автомобилей с каждой полосы не пересекут перекресток или повернут направоЕсли на каждой полосе движения меньше 5 ожидающих автомобилей, светофор становится красным, как только все ожидающие автомобили пересекают перекресток или поворачивают направо.

Кроме того, есть четыре дороги на север, юго-востоки запад, и машина может выбрать движение прямо влево или вправо.Входом будет автомобиль и его источник, пункт назначения и полоса движения.например, car1 (с севера на юг, слева);

Мой вопрос: как мне поступить, чтобы реализовать это? Должен ли я использовать один поток для светофора или 4 потока для каждого? Будет ли полезен семафор илипеременная условия или мьютексы или просто pthreads?Или может быть что-то еще должно быть отдельные темы для автомобилей, а?как передать управление от одного сигнала к другому?

...