Freigeben über


receive-Funktion

Eine allgemeine Empfangsimplementierung, mit der ein Kontext auf Daten von genau einer Quelle warten und die akzeptierten Werte filtern kann.

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

Parameter

  • _Type
    Der Nutzlasttyp.

  • _Src
    Ein Zeiger oder Verweis auf die Quelle, von der Daten erwartet werden.

  • _Timeout
    Die maximale Zeit, für die die Methode Daten empfangen sollte, in Millisekunden.

  • _Filter_proc
    Eine Filterfunktion, die bestimmt, ob Meldungen akzeptiert werden sollen.

Rückgabewert

Ein Wert aus der Quelle mit dem Nutzlasttyp.

Hinweise

Wenn der Parameter _Timeout einen anderen Wert als den konstanten Wert COOPERATIVE_TIMEOUT_INFINITE hat, wird die Ausnahme operation_timed_out ausgelöst, falls die angegebene Wartezeit abläuft, bevor eine Meldung empfangen wird. Wenn Sie ein Timeout der Länge 0 (null) möchten, sollten Sie die try_receive-Funktion verwenden, im Gegensatz zu einem Aufruf von receive mit einem Timeout von 0 (null), da sie effizienter ist und bei Timeouts keine Ausnahmen auslöst.

Weitere Informationen finden Sie unter Funktionen zum Übergeben von Meldungen.

Anforderungen

Header: agents.h

Namespace: Parallelität

Siehe auch

Referenz

concurrency-Namespace

try_receive-Funktion

send-Funktion

asend-Funktion