Share via


receive, fonction

Implémentation receive générale permettant à un contexte d'attendre des données d'une source exactement et de filtrer les valeurs acceptées.

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

Paramètres

  • _Type
    Type de charge utile.

  • _Src
    Pointeur ou référence à la source à partir de laquelle les données sont attendues.

  • _Timeout
    Durée maximale d'attente des données par la méthode, en millisecondes.

  • _Filter_proc
    Fonction de filtre qui détermine si les messages doivent être acceptés.

Valeur de retour

Valeur issue de la source, du type de la charge utile.

Notes

Si le paramètre _Timeout a une valeur autre que la constante COOPERATIVE_TIMEOUT_INFINITE, l'exception operation_timed_out est levée si la durée spécifiée expire avant qu'un message ne soit reçu. Si vous souhaitez un délai d'attente de longueur nulle, vous devez utiliser la fonction try_receive, en appelant receive avec un délai d'attente de 0 (zéro), car c'est plus efficace et ne lève pas d'exceptions sur les délais d'attente.

Pour plus d'informations, consultez Fonctions de passage de messages.

Configuration requise

En-tête : agents.h

Espace de noms d'accès : Concurrency

Voir aussi

Référence

Concurrency, espace de noms

try_receive, fonction

send, fonction

asend, fonction