Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 69 стр.

UptoLike

value=value+2;
}
/* завершить рабочие процессы, вывести простые числа */
OUT("stop"); /* погрузить "stop" в ПК */
for (i=0; i<=limit; i++)
printf("%d\n", primes[i]);
/* распечатать массив primes */
}
Замечание. Генерацией новых кандидатов в ПК занимаются ра-
бочие процессы.
Головная программа сначала выполняет один процесс:
1) она начинает с чтения аргументов командной строки для
определения, сколько нужно простых чисел и сколько процессов
можно использовать;
2) затем используется примитив EVAL для создания рабочих п ро-
цессов;
3) далее используется примитив OUT для помещения в простран-
ство кортежей числа-кандидата пять;
4) для получения результатов от рабочих процессов использует-
ся примитив IN (из влекает простые числа из ПК), причем резуль-
таты получаются в порядке возрастания простых чисел;
5) получив простое число программа помещает его и его номер в
пространство кортежей, а также дополняет таблицу простых чисел;
6) работа завершается, когда real_main получает limit про-
стых чисел: управляющий процесс сообщает об остановке, помещая
в ПК кортеж "stop";
7) real_main распечатывает таблицу простых чисел primes.
Что делают рабочие процессы?
1) каждый рабочий процесс многократно получает число-
кандидат из ПК;
2) проверяет, простое ли оно;
3) отправляет его управляющему процессу, помещая в ПК;
4) помещает следующее нечетное число в ПК (таким образом, в
ПК находится не более одного числа-кандидата);
5) каждый рабочий процесс поддерживает локальную табли-
цу простых чисел и дополняет ее, извлекая простые числа из ПК,
70