Compartilhar via


Função receive

Um geral obtém a implementação, permitindo que um contexto exatamente uma espera dados de origem e filtra os valores aceitos.

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
    O tipo de carga.

  • _Src
    Um ponteiro ou uma referência à origem dos dados esperados.

  • _Timeout
    O tempo máximo para que o método deve para os dados, em milissegundos.

  • _Filter_proc
    Uma função de filtro que determina se as mensagens devem ser aceitas.

Valor de retorno

Um valor de origem, do tipo de carga.

Comentários

Se o parâmetro _Timeout tiver um valor diferente COOPERATIVE_TIMEOUT_INFINITEconstante, a exceção operation_timed_out será gerada se a quantidade especificada de tempo expirar antes que uma mensagem é recebida. Se você desejar um tempo limite de comprimento zero, você deve usar a função de try_receive , em vez de chamar receive com um tempo limite de 0 (zero), porque é mais eficiente e não lança exceções em tempo limite.

Para obter mais informações, consulte Funções de transmissão de mensagem.

Requisitos

Cabeçalho: agents.h

Namespace: simultaneidade

Consulte também

Referência

Namespace Concurrency

Função try_receive

Função send

Função asend