Compartir a través de


receive (Función)

Una implementación receive general, que permite a un contexto esperar datos exactamente de un origen y filtrar los valores que se aceptan.

template <
   class _Type
>
_Type receive(
   _Inout_ ISource<_Type> * _Src,
   unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE
);

template <
   class _Type
>
_Type receive(
   _Inout_ 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
);

Parámetros

  • _Type
    El tipo de carga.

  • _Src
    Un puntero o referencia al origen del que se esperan los datos.

  • _Timeout
    El tiempo máximo que el método debe permitir para los datos, en milisegundos.

  • _Filter_proc
    Una función de filtro que determina si se deben aceptar los mensajes.

Valor devuelto

Un valor del origen, del tipo de carga útil.

Comentarios

Si el parámetro _Timeout tiene un valor distinto de la constante COOPERATIVE_TIMEOUT_INFINITE, se produce la excepción operation_timed_out si la cantidad de tiempo especificada expira antes de recibirse un mensaje. Si desea un tiempo de espera de duración cero, debería usar la función try_receive, en lugar de llamar a receive con un tiempo de espera de 0 (cero), ya que es más eficaz y no produce excepciones en tiempos de espera.

Para obtener más información, vea Funciones que pasan mensajes.

Requisitos

Encabezado: agents.h

Espacio de nombres: simultaneidad

Vea también

Referencia

concurrency (Espacio de nombres)

try_receive (Función)

send (Función)

asend (Función)