Составители:
Рубрика:
RDP — читает кортеж (но оставляет его в ПК).
Пример 2. Реализация барьера-счетчика.
OUT("barier", 0);
# создание элемента barier в ПК с нулевым
# значением счетчика
Достигнув барьера тот или иной процесс извлекает счетчик из
ПК:
IN("barier", ?counter);
# получение кортежа "barier"
OUT("barier", counter=counter+1);
# увеличение счетчика на единицу
Далее процесс ждет, пока к барьеру придут все n процессов с
помощью блокирующего чтения
RD("barier", n);
При появлении указанного кортежа в ПК процесс продолжает
работу.
Шестой (и последний) примитив в языке Linda — примитив,
создающий новые кортежи
EVAL("tag", expr_1, . . ., expr_n);
Среди expr_i могут быть процедуры или функции. При созда-
нии кортежа они вычисляются, причем все поля кортежа вычис-
ляются параллельно. Меткой кортежа становится метка "tag", а
полями — значения после вычисления функций и процедур.
Пример 3. Рассмотрим параллельный оператор
co[i=1 to n]
a[i]=f(i);
Ему соответствует C-программа, обогащенная примитивами
Linda
for(i=1; i<=n; i++) EVAL("a", i, f(i));
В пространстве кортежей оказывается соответствующие n кор-
тежей.
Пример 4. Обмен сообщениями “с помощью каналов”
OUT("ch", expressions);
— посылка в “канал”.
IN("ch", expressions);
— получение из “канала”.
66
Страницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »