Согласно книге «Концепции операционных систем», говорится:
При прямой связи каждый процесс, который хочет установить связь, должен явно указать получателя или отправителя сообщения. Эта схема демонстрирует симметрию в адресации. В этой схеме примитивы отправки и приема определяются как:
- Отправить (P, сообщение): отправить сообщение процессу P
- получить (Q, сообщение) — получить сообщение от процесса Q.
При асимметрии только отправитель называет получателя; получатель не обязан называть отправителя. В этой схеме примитивы отправки и приема определяются следующим образом:
- Отправить(P, сообщение): отправить сообщение процессу P.
- получить (идентификатор, сообщение): получить сообщение от любого процесса; переменная id устанавливается на имя процесса, с которым произошла связь.
Я не могу понять, в чем разница? В асимметричной схеме разве вызов receive()
не должен указывать идентификатор отправителя?
(senderID, message) = receive()
, чтобы было ясно, что иsenderID
, иmessage
являются выходами, а не входами (где это было быmessage = receive(senderID)
для симметричного случая). - person Brendan   schedule 06.08.2019