Реферат: Системы, управляемые потоком данных. Язык Dataflow Graph Language.
32 Task : RECORD N:word; a,b:real; END;
33 S : real;
34 i : word;
35 FUNCTION f(x:real):real;
36 BEGIN
37 Result := 4 / (1 + x*x);
38 END;
39 BEGIN
40 exportDemand[0].Send (FloLib.CopyNumber, SizeOf(cardinal));
41 WHILE (true) DO WITH Task DO BEGIN
42 importArg.Receive (Task, SizeOf(Task));
43 IF (Task.N = 0) THEN EXIT;
44 h := (b-a)/N;
45 S := 0;
46 FOR i := 1 TO N DO
47 S := S + f(a+(i-0.5)*h);
48 S := h*S;
49 exportPartSum[0].Send (S, SizeOf(S));
50 exportDemand[0].Send (FloLib.CopyNumber,SizeOf(cardinal));
51 END;
52 END;
Файл Worker.frm : телопроцесса Worker
Бесконечный цикл 41-51 обеспечивает работу процесса до получения сигнала завершения от распределителя работ Manager.
В строке 42 ждем очередное задание Task. Если число интервалов в задании равно 0, то завершаем работу. В противном случае вычисляем частичную сумму на интервале (Task.a; Task.b) и отсылаем ее суммирующему процессу (строки 44-49). В строке 50 обращаемся к распределителю работ за очередным заданием.
53 PROCEDURE SummerBody;
54 VAR
55 N, i : cardinal;