Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2006-10-21 16:16:19 ЛС | профиль | цитата
Вячеслав, этот кусок (в принципе) завязан на пока не написанный кусок по hub-ам. Если придерживаться придуманной аналогии, то можно написать примерно

Hub (HubEx) - это (сложная) стрелка с семафором.(...) GetData - это развилка со светофором


тогда можно написать так


Так как "рельсы" (связь) есть, то состав отправляется по ним, причём при своём движении он блокирует все семафоры на своём пути, в результате чего другой поезд не может через соответствующую стрелку проехать до тех пор, пока первый не разблокирует семафор на этой стрелке. При этом никакой поезд не может тронуться в путь до тех ппор, пока хотя бы одна стрелка на пути его следования заблокирована.
(...)
Так как дальше ехать некуда, а по пути не всретилось ничего интересного (например, развилок), то состав по тому же пути возвращается на станцию отправления, игнорируя все промежуточные станцииЮ кром етех, которые указаны в его "путевом листе". По возврашении на станцию отправления происходит разблокировка всех заблокированных данным составом стрелок.
(... где-то в части про красные потоки ...)
Замечу, что автомобили также не могут начинать движение до тех пор, пока хотя бы один перекрётсок на пути их следования закрыт.


По поводу "кто блокирует": идея с диспетчером мне нравится, будем считать, что семафоры переключает именно он. Диспетчером в данном случае выступает ОС (?)

Ещё кусок про Hub (под Hub-ом я понимаю 4 компонента: Hub, HubEx, GetData, GetDataEx), пока набросок

Hub - это разъезд (сложная конструкция из нескольких стрелок, внутри которой поезд может переходить с одного пути на другой). Когда поезд прибывает на разъезд, он получает отметку в своём "путевом листе" о том, что ему надо вернуться (на "обратном пути") на это разъезд и там перейти на следующий выходной путь. После исчерпания всех выходных путей информация о разъезде удаляется из путевого листа, и поезд продолжает обратное движение по тому входному пути, с которого он изначально прибыл.


карма: 1

0