Функция receive

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

template <
   class _Type
>
_Type receive(
   ISource<_Type> * _Src,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> * _Src,
   typename ITarget<_Type>::filter_method const& _Filter_proc,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> &_Src,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);
template <
   class _Type
>
_Type receive(
   ISource<_Type> &_Src,
   typename ITarget<_Type>::filter_method const& _Filter_proc,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);

Параметры

  • _Type
    Тип полезных данных.

  • _Src
    Указатель или ссылка на источник, из которого ожидаются данные.

  • _Timeout
    Максимальное время, для которого следует метод для данных в миллисекундах.

  • _Filter_proc
    Функция фильтра, которая определяет, следует ли принять сообщения.

Возвращаемое значение

Значения из источника типа полезной нагрузки.

Заметки

Если параметр _Timeout имеет значение, отличное от констант COOPERATIVE_TIMEOUT_INFINITE, исключение operation_timed_out выбрасывается при истечении указанного промежутка времени до получения сообщения. Если нужно время ожидания нулевой длины, следует использовать функцию try_receive, в противоположность вызову receive с таймаутом 0 (ноль), так как он является более эффективным и не выдает исключений в связи с временем ожидания.

Дополнительные сведения см. в разделе Функции передачи сообщений.

Требования

Заголовок: agents.h

Пространство имен: Concurrency

См. также

Ссылки

Пространство имен Concurrency

Функция try_receive

Функция send

Функция asend