ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
153
АЛГОРИТМ ДЕЙКСТРЫ МКОД СП(G,s,Q,d,p)
//
Инициализация
ЦИКЛ
ПОЛУЧИТЬ((Q.KEY,Q.DATA))
ДОБАВИТЬ(Q.KEY,Q.DATA)
ПОЛУЧИТЬ (G.KEY,G.DATA)
ДОБАВИТЬ(G.KEY,G.DATA)
ВСЕ ЦИКЛ
//
Основной цикл
МЕТКА1:
ЦИКЛ
ПЕРЕДАТЬ |Q|
ПОИСК МИНИМУМ (Q)
ПЕРЕДАТЬ МИНИМУМ (Q)
УДАЛИТЬ МИНИМУМ (Q)
ПОЛУЧИТЬ G.KEY
ПОИСК (G.KEY, G.DATA)
ПЕРЕДАТЬ (G.KEY, G.DATA)
ЦИКЛ
ПОЛУЧИТЬ(G.KEY)
ПОИСК (G.KEY, G.DATA)
ПЕРЕДАТЬ (G.KEY, G.DATA)
ПОЛУЧИТЬ(G.KEY,G.DATA)
ИЗМЕНИТЬ(G.KEY,G.DATA)
ПОЛУЧИТЬ(Q.KEY,Q.DATA)
УДАЛИТЬ(Q.KEY,Q.DATA)
ПОЛУЧИТЬ(Q.KEY,Q.DATA)
ДОБАВИТЬ(Q.KEY,Q.DATA)
МЕТКА2:
ВСЕ ЦИКЛ
МЕТКА3:
ВСЕ ЦИКЛ
МЕТКА4: КОНЕЦ
Как видно из приведенного псевдокода, многие участки кода СП
не требуют синхронизации с ЦП, а обрабатываются независимо. Эта
особенность хорошо прослеживается на последовательных участках
команд чтения в основном цикле программы. Такие команды могут
запускаться на исполнение в асинхронном режиме без получения
разрешающего сигнала на запуск от ЦП. Команды могут выполнять-
ся до тех пор, пока выходная очередь результатов (очередь данных на
чтение на рис. 1) не будет заполнена. В случае выхода из цикла по
сигналу от ЦП (например, переход к МЕТКА 2) очередь принуди-
тельно освобождается для подготовки к принятию новых данных.