Обмін повідомленнями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Обмін повідомленнями — в програмуванні, є способом координації в конкурентних, паралельних, та об'єктно-орієнтованих системах, та організації взаємодії між процесами. Координація робиться шляхом відсилання повідомлень отримувачу. Повідомлення можуть мати форму викликів функцій, сигналів, та пакетів даних. До найвідоміших моделей обчислень, основаних на обміні повідомленнями належать модель Актора та числення процесів.

Мікроядерні операційні системи координують роботу ядра та програм обміном повідомлень.

Розподілені системи доступу до об'єктів та віддаленого виклику методів, такі як ONC RPC, CORBA, Java RMI, DCOM, SOAP, .NET Remoting та їм подібні є системами з обміном повідомленнями. Цей термін також використовується в галузі надпотужних обчислювальних систем в бібліотеці MPI.

Примітиви[ред.ред. код]

Функції відправлення та отримання повідомлень зазвичай мають назву відправити (англ. send) та отримати (англ. receive) відповідно. Вони є примітивами в системах обміну повідомленнями. Функція «відправити» має два параметри — адресу, на яку слід надіслати повідомлення, та буфер даних повідомлення. Функція «отримати» також має два параметри — адреса звідки очікується повідомлення (може бути шаблоном) та буфер для збереження даних повідомлення.[1]

За характеристиками, примітиви можна поділити на:

синхронні 
Якщо примітиви відправити та отримати встановлюють попередній зв'язок між собою.
асинхронні 
Примітив відправити називається асинхронним, якщо він повертає керування одразу після завершення зчитування даних з буфера даних повідомлення.
блокуючі 
Примітив працює у блокуючому режимі, якщо він повертає керування лише після завершення виконання (як в асинхронному, так і в синхронному режимі).
не блокуючі 
Примітив працює у не блокуючому режимі, якщо він одразу повертає керування, навіть коли повідомлення не зчитане або не отримане.

Таким чином, існує чотири варіанти відправки повідомлень:

  1. синхронний блокуючий,
  2. синхронний не блокуючий,
  3. асинхронний блокуючий,
  4. асинхронний не блокуючий.

Існує два варіанти для отримання повідомлень:[1]

  1. синхронний блокуючий;
  2. синхронний не блокуючий.

Посилання[ред.ред. код]

  1. а б Ajay D. Kshemkalyani, Mukesh Singhal (2008). Distributed Computing, Principles, Algorithms, and Systems. Cambridge University Press. ISBN 978-0-511-39341-9. 

Дивіться також[ред.ред. код]