Hub (HubEx) - это (сложная) стрелка с семафором.(...) GetData - это развилка со светофором
тогда можно написать так
Так как "рельсы" (связь) есть, то состав отправляется по ним, причём при своём движении он блокирует все семафоры на своём пути, в результате чего другой поезд не может через соответствующую стрелку проехать до тех пор, пока первый не разблокирует семафор на этой стрелке. При этом никакой поезд не может тронуться в путь до тех ппор, пока хотя бы одна стрелка на пути его следования заблокирована.
(...)
Так как дальше ехать некуда, а по пути не всретилось ничего интересного (например, развилок), то состав по тому же пути возвращается на станцию отправления, игнорируя все промежуточные станцииЮ кром етех, которые указаны в его "путевом листе". По возврашении на станцию отправления происходит разблокировка всех заблокированных данным составом стрелок.
(... где-то в части про красные потоки ...)
Замечу, что автомобили также не могут начинать движение до тех пор, пока хотя бы один перекрётсок на пути их следования закрыт.
По поводу "кто блокирует": идея с диспетчером мне нравится, будем считать, что семафоры переключает именно он. Диспетчером в данном случае выступает ОС (?)
Ещё кусок про Hub (под Hub-ом я понимаю 4 компонента: Hub, HubEx, GetData, GetDataEx), пока набросок
Hub - это разъезд (сложная конструкция из нескольких стрелок, внутри которой поезд может переходить с одного пути на другой). Когда поезд прибывает на разъезд, он получает отметку в своём "путевом листе" о том, что ему надо вернуться (на "обратном пути") на это разъезд и там перейти на следующий выходной путь. После исчерпания всех выходных путей информация о разъезде удаляется из путевого листа, и поезд продолжает обратное движение по тому входному пути, с которого он изначально прибыл.