Функции передачи сообщений
Библиотека асинхронных агентов предоставляет несколько функций, которые позволяют передавать сообщения между компонентами.
Эти функции передачи сообщений используются с различными типами блоков сообщений. Дополнительные сведения о типах блоков сообщений, определяемых средой выполнения с параллелизмом, см. в разделе Асинхронные блоки сообщений.
Подразделы
В этом разделе описываются следующие функции передачи сообщений:
send и asend
receive и try_receive
Примеры
send и asend
Функция concurrency::send отправляет сообщение заданному целевому объекту синхронно, а функция concurrency::asend — асинхронно. Функции send и asend ждут, пока целевой объект укажет, примет он сообщение или отклонит.
Перед возвращением функция send ожидает принятия или отклонения сообщения целевым объектом. Функция send возвращает значение true, если сообщение было доставлено; в противном случае — значение false. Поскольку функция send работает синхронно, перед возвращением эта функция send ожидает получения сообщения целевым объектом.
Функция asend, наоборот, перед возвратом не ждет, пока целевой объект примет или отклонит сообщение. Вместо этого функция asend возвращает значение true, если целевой объект получает сообщение и в конечном счете примет его. В противном случае asend возвращает значение false, чтобы указать, что целевой объект отклонил сообщение или отложил решение о принятии сообщения.
[Наверх]
receive и try_receive
Функции concurrency::receive и concurrency::try_receive считывают данные из данного источника. Функция receive ожидает, пока данные станут доступными, а функция try_receive возвращается немедленно.
Использовать функцию receive следует в случаях, когда для продолжения обязательно наличие данных. Использовать функцию try_receive следует в случаях, когда нельзя блокировать текущий контекст или для продолжения не обязательно наличие данных.
[Наверх]
Примеры
Примеры использования функций send, asend и receive см. в следующих разделах.
Практическое руководство. Реализация различных шаблонов "источник-приемник"
Практическое руководство. Предоставление рабочих функций классам call и transformer
Практическое руководство. Использование преобразователя в конвейере данных
Практическое руководство. Отправка сообщений через определенные интервалы
Практическое руководство. Использование фильтра блока сообщений
[Наверх]