![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Доброго времени суток! Очень прошу помочь со следующей задачей:
Железная дорога, соединяющая два города А и В, включает участок, на котором имеется только единственный путь, см. схему. Движение поездов на единственном пути подчиняется следующим ограничениям: - на свободный единственный путь может войти поезд любого направления; - пока на единственном пути находится поезд некоторого направления, на него не может войти поезд другого направления, но может войти поезд того же направления. --->--------- ------>---- А ------>------<------- B ---<--------- ------<---- Требуется запрограммировать задачу для двух вариантов условий: 1) нет ограничений на количество поездов одного направления, находящихся на единственном пути; 2) ограничить количество поездов одного направления, находящихся на единственном направлении значением N и решить проблему "бесконечного ожидания", свойственную первому варианту, когда поезда одного направления, захватив единственный путь, не позволяют поездам другого направления пройти по этому пути. При этом необходимо реализовать рациональный порядок выделения единственного пути поездам обоих направлений. Задачу, по сути, решил, но никак не получается решить проблему "бесконечного ожидания", то есть, если есть куча поездов слева, и куча справа с таким же приоритетом, поезда слева отхватывают весь перегон, не давая поездам справа идти. Подскажите, пожалуйста, как решить данную проблему? Вот подробное описание задачи и почти решенная задача (все работает, кроме вышеуказанной проблемы): |
#2
|
||||
|
||||
![]() так а если их пускать по очереди
|
#3
|
|||
|
|||
![]() Цитата:
А как это сделать? Я не профи в программировании, буду очень благодарен, если поможете сделать хотя бы вариант с пуском по очереди. |
#4
|
||||
|
||||
![]() Цитата:
Так вот, если сделать у этого семафора свойство N, которое будет содержать значение 0 или 1, и менять его по следующему правилу: если 2 поезда, с одинаковыми приоритетами претендуют на ресурс, то если значение свойства N=1 то пропускаем поезд слева и меняем значение N на 0, если N=0 то пропускаем поезд справа и меняем значение N на 1. Можно еще выделять время. например 15 мс. работает правая сторона, 15 левая |
#5
|
|||
|
|||
![]() Цитата:
Благодарю, хорошая идея, буду пробовать! |
#6
|
||||
|
||||
![]() Цитата:
|