Функции передачи сообщений

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

Эти функции передачи сообщений используются с различными типами блоков сообщений. Дополнительные сведения о типах блоков сообщений, определяемых средой выполнения с параллелизмом, см. в разделе Асинхронные блоки сообщений.

Подразделы

В этом разделе описываются следующие функции передачи сообщений:

  • 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 см. в следующих разделах.

[в начало]

См. также

Ссылки

Функция send

Функция asend

Функция receive

Функция try_receive

Основные понятия

Библиотека асинхронных агентов

Асинхронные блоки сообщений

Журнал изменений

Дата

Журнал

Причина

Март 2011

Объясняется разница между функциями send и asend.

Обратная связь от клиента.

Август 2010

Добавлены ссылки на примеры.

Улучшение информации.