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

UptoLike

/* сообщаем результат управляющему процессу */
OUT("result", candidate, isprime);
/* погружаем в ПК результат */
}
}
УПРАВЛЯЮЩИЙ ПРОЦЕСС
real_main(int argc, char*argv[ ]) {
/* argc - число аргументов командной строки
(больше или равно единицы)
char*argv[ ] - массив символьных указателей,
в котором каждый элемент
указывает на аргумент командной строки */
int primes[LIMIT]={2,3}
/* локальная таблица простых чисел */
int limit, numWorkers, i, isprime;
int numPrimes=2, value=5;
limit=atoi(argv[1];) /* считать командную строку */
numWorkers=atoi(argv[2]);
/* создать рабочие процессы и поместить их в портфель
число пять (первый кандидат): */
for (i=1; i<=numWorkers; i++)
EVAL("worker", worker());
/* создание рабочих процессов в ПК */
OUT("candidate", value); /* - создание кандидата в ПК;
получить результаты рабочих процессов
в порядке возрастания: */
while(numPrimes<limit) {
IN("result", value, ?isprime); /* извлечь кандидата */
if(isprime){ /* поместить результат в таблицу и в ПК */
primes[numPrimes]=value; /* расширить таблицу */
OUT("prime", numPrimes, value);
/* -- погрузить простое в ПК */
numPrimes++;
}
69