"Андрей Куракин. Системная архитектура QNX4" - читать интересную книгу автора

получателю и никому более.


Примитивы передачи сообщений
Для непосредственной связи друг с другом взаимодействующие
процессы используют следующие функции языка программирования Си:


Функция языка Си:
Назначение:
Send()посылка сообщений
Receive()получение сообщений
Reply()ответ процессу, пославшему сообщение

Эти функции могут быть использованы как локально, т.е. для связи
между процессами на одном компьютере, так и в пределах сети, т.е. для
связи между процессами на разных узлах.

Следует заметить, однако, что далеко не всегда возникает
необходимость использовать функции Send(), Receive() и
Reply() в явном виде. Библиотека функций языка Си в QNX построена
на основе использования сообщений - в результате, когда процесс использует
стандартные механизмы передачи данных (такие, как, например, программный
канал - pipe), он косвенным образом использует передачу сообщений.





Процесс A посылает сообщение процессу B, который получает его,
обрабатывает и посылает ответ





На рисунке изображена последовательность событий, имеющих место,
когда два процесса, процесс A и процесс B, используют функции
Send(), Receive() и Reply() для связи друг с другом:



Процесс A посылает сообщение процессу B, вызвав функцию Send(),
которая передает соответствующий запрос ядру. В этот момент времени
процесс A переходит в SEND-блокированное состояние и остается в этом
состоянии до тех пор, пока процесс B не вызовет функцию Receive()
для получения сообщения.

Процесс B вызывает Receive() и получает сообщение от
процесса A. При этом состояние процесса A изменяется на REPLY-блокирован.