Реферат: Системы, управляемые потоком данных. Язык Dataflow Graph Language.
57 TotalSum, S : real;
58 BEGIN
59 importNumIter.Receive (N, SizeOf(N));
60 TotalSum := 0;
61 FOR i := 1 TO N DO BEGIN
62 importPartSum.Receive (S, SizeOf(S));
63 TotalSum := TotalSum + S;
64 END;
65 AssignFile (F, ‘Pi.result’);
66 Rewrite (F);
67 WriteLn (F, ‘Pi = ’, TotalSum);
68 CloseFile (F);
69 END;
Файл Summer.frm : телопроцесса Summer
В строках 61-64 собираются частичные суммы от всех рабочих процессов и суммируются в переменной TotalSum. Число частичных сумм записываем в переменну N из порта importNumIter (строка 59).
Компиляция узловых процессов
После того, как созданы шаблоны, нужно получить из них файлы, пригодные для компиляции. Для этого используется компилятор с языка DGL:
dglcPi.dgl
Компилятор, если нет ошибок, сгенерирует следующие файлы: Pi.dpr, Manager.pas, Worker.pas, Summer.pas.
Загрузка и выполнение программы
Сначала на компьютерах сети нужно запустить программу-монитор. Перепишем откомпилироанные файлы и файл Pi.dgl с текстом графа потока данных на языке DGL в один каталог и запустим диспетчер, указав Pi.dgl в качестве параметра. После окончания работы диспетчера должен появится файл Pi.result, в котором записано приближенное значение числа Pi.
Приложение А
Синтаксис языка DGL
DGL = ["DATAFLOW GRAPH" [identifier] ";"]
{Definitions}
{ProcessDecl}
Definitions = identifier "=" ConstExpr
ProcessDecl = "PROCESS" identifier ["AT" path]
["[" NumCopies "]" ]
{"EXPORT:"{ExportDecl} |
"IMPORT:"{ImportDecl}
}