Теория распараллеливания и синхронизация. Демьянович Ю.К - 77 стр.

UptoLike

чем на ε·(ba), то вычисления прекращаются; в противном случае
для каждого из отрезков [a, m] и [m, b] проводятся вычисления по
той же схеме, что и для [a, b] (см. рис. 7).
Рис. 7.
ПРОГРАММА АДАПТИВНОЙ КВАДРАТУРЫ
С ИСПОЛЬЗОВАНИЕМ ПОРТФЕЛЯ ЗАДАЧ
type task (double left, right, fleft, fright, lrarea);
queue bag(task); # портфель задач
int size; # число задач в портфеле
int idle = 0; # число простаивающих процессов
double total = 0.0; # общая площадь
[вычислить аппроксимацию площади из отрезка от a до b];
[добавить в портфель задачу (a, b, f(a), f(b), area)];
size = 1;
process Worker[w = 1 to n] {
1
double left, right, fleft, fright, lrarea;
double mid, fmid, larea, rarea;
while (true) {
2
# проверить завершение
< idle
++
;
if (idle == n&&size == 0) break; > # неделимая операция
# получить задачу из портфеля
< await (size > 0)
[забрать задачу из портфеля];
size
−−
; idle
−−
; >
78