Алгоритмы параллельных вычислений и программирование. Бурова И.Г - 196 стр.

UptoLike

isprime=0; break;
}
i++;
if(i>numPrimes) { /* требуется следующее простое */
numPrimes++;
RD("prime", numPrimes, ?primes[numPrimes]);
}
}
/* сообщаем результат управляющему процессу */
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); /* извлечь кандидата */
197