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

UptoLike

Глава 4. ОПЕРАТОРЫ ВЗАИМОДЕЙСТВИЯ
И ЗАЩИТА
§ 1. Синхронная передача сообщений
Команда send не приводит к блокировке программы, отправив-
шей сообщение. В этом случае отправленное сообщение либо до-
стигает адресата, либо (если адресат не может его принять) оно
остается в канале в очереди у адресата; рано или поздно адресат
примет сообщение. При этом отправитель продолжает свою рабо-
ту. Такой способ обработки команды называется неблокирующим и
асинхронным (он не требует синхронизации отправителя и адреса-
та).
В противоположность команде send команда synch_send явля-
ется блокирующей, отправитель приостанавливается до получения
подтверждения о приемке от адресата.
Если адресат не готов принять послание, то начинается простой
отправителя. При этом процесс-отправитель не может послать но-
вое сообщение адресату. Физически сообщение находится в адрес-
ном пространстве отправителя до готовности адресата получить
его; при такой реализации возникает очередь в канале отправителя
из адресов сообщений нуждающихся в отправке.
Синхронной передаче свойственны следующие недостатки.
1. Первый недостаток. При взаимодействии двух процессов по
крайней мере один из них блокируется, в зависимости от того, кто
первым попытается установить связь.
Рассмотрим следующую программу “производитель потреби-
тель”:
channel values(int);
process Producer {
int data[n];
for [i=0 to n-1] {
[выполнить некоторые вычисления];
synch_send values(data[i]);
}
}
process Consumer {
int results[n];
50