Condividi tramite


Funzione receive

Un'implementazione di ricezione generale, che consente a un contesto di attendere i dati esattamente da un'origine e di filtrare i valori accettati.

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
);

Parametri

  • _Type
    Tipo di payload.

  • _Src
    Puntatore o riferimento all'origine da cui sono previsti i dati.

  • _Timeout
    Tempo massimo, in millisecondi, necessario al metodo per i dati.

  • _Filter_proc
    Una funzione del filtro che determina se devono essere accettati i messaggi.

Valore restituito

Valore derivato dalla fonte, di tipo di payload.

Note

Se il parametro _Timeout dispone di un valore diverso dalla costante COOPERATIVE_TIMEOUT_INFINITE, l'eccezione operation_timed_out viene generata se la quantità specificata di tempo scade prima che venga ricevuto un messaggio.Se si desidera un timeout di lunghezza zero, è necessario utilizzare la funzione try_receive, anziché chiamare receive con un timeout di 0 (zero), poiché è più efficiente e non genera eccezioni sui timeout.

Per ulteriori informazioni, vedere Funzioni di passaggio dei messaggi.

Requisiti

Header: agents.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Spazio dei nomi concurrency

Funzione try_receive

Funzione send

Funzione asend