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

UptoLike

мы параграфа 3 из главы 1, которая была основана на примитивах
передачи сообщений.
Процесс M повторяет действия процесса GLUE из упомянутого па-
раграфа. Однако, этот процесс использует оператор call для по-
мещения значения в выходной канал, а не send; для получения
следующего числа из потока используются семафоры.
Внутри модуля серверные процессы, обрабатывающие вызовы
in1 и in2 являются производите лями, а M потребителем.
Каждый модуль экспортирует операции in1 и in2. Они обеспе-
чивают входные потоки и могут использоваться другими модулями
для получения входных знач ен ий.
Главный модуль вызывает из мод улей третью операцию
initialize для того, чтобы передать фильтру мандат на доступ к
используемому выходному потоку; например, главный модуль мо-
жет дать фильтру Merge[i] мандат доступа к операции in2 филь-
тра Merge[j] с помощью строки
call Merge[i].initialize(Merge[j].in2)
Сравнение программы из параграфа 3 главы 1 с этой програм-
мой показывает основной недостаток: длина программы велика
(требуются дополнительные фрагменты).
§ 6. Обмен значениями в RPC
При взаимодействии равных процессов программирование с ис-
пользованием удаленного вызова процедур (RPC) также ведет к
удлинению программы по сравнени ю с использованием посылки
сообщений. Предположим, что модул и находятся на разных ком-
пьютерах.
ОДИН ИЗ ВАРИАНТОВ ОБМЕНА ЗНАЧЕНИЯМИ
module Exchange[i=1 to 2]
op deposit(int);
body
int othervalue;
sem ready=0; # семафор используется для сигнализации
proc deposit(other) {
# - процедура вызывается из другого модуля
othervalue=other;
81