Составители:
программируются в каждом процесс е. В конце каждой итерации
происходит синхронизация всех процессов с помощью барьера: за-
кончившие очередную итерацию процессы ждут момента, когда все
процессы закончат эту итерацию, и только после этого каждый пе -
реходит к следующей итерации.
process Worke[i = 1 to n] {
while (true) {
[код решения задачи с номером i];
[ожидание завершения всех задач];
}
}
§10 Требования к барьеру
В итераци ях, реализуемых n процессами с использованием барье -
ра, можно расс мотре ть разделяемый це лочи сл енн ый счетчик count
с нулевым начальным значением. Будем считать, что если процесс
достигает барьера, то он увеличивает счетчик на 1 и останавлива-
ется в ожидании значения счетчика, равного n; как только счетчик
достигнет значения n, все процессы могут продолжить работу. Эта
идея иллюстрируется следующей схемой:
int count = 0;
process Worker[i = 1 to n] {
while (true) {
[программа реализации задачи i];
< count = count + 1; >
< await (count == n); >
}
}
Если имеется инструкция FA (“извлечь и сложить”, то барьер можно
реализовать по схеме:
FA(count, 1);
while (count! = n) skip;
61
Страницы
- « первая
- ‹ предыдущая
- …
- 58
- 59
- 60
- 61
- 62
- …
- следующая ›
- последняя »
