Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein join-Meldungsblock ist ein geordneter propagator_block mit mehreren Quellen und einem einzelnen Ziel, der Meldungen vom Typ T aus allen Quellen kombiniert.
Syntax
template<class T,
join_type _Jtype = non_greedy>
class join : public propagator_block<single_link_registry<ITarget<std::vector<T>>>,
multi_link_registry<ISource<T>>>;
Parameter
T
Der Nutzlasttyp der nachrichten, die vom Block verknüpft und weitergegeben werden.
_Jtype
Die Art des join Blocks ist dies entweder greedy oder non_greedy
Member
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| Verknüpfen | Überladen. Erstellt einen join -Meldungsblock. |
| ~join Destructor | Zerstört den join Block. |
Geschützte Methoden
| Name | Beschreibung |
|---|---|
| accept_message | Akzeptiert eine Nachricht, die von diesem join Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer. |
| consume_message | Nutzt eine Nachricht, die join zuvor vom Messaging-Block angeboten und vom Ziel reserviert wurde und den Besitz an den Anrufer überträgt. |
| link_target_notification | Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem join Messagingblock verknüpft wurde. |
| propagate_message | Eine Nachricht wird asynchron von einem ISource Block an diesen join Nachrichtenblock übergeben. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird. |
| propagate_to_any_targets | Erstellt eine Ausgabenachricht, die eine Eingabenachricht aus jeder Quelle enthält, wenn sie alle eine Nachricht weitergegeben haben. Sendet diese Ausgabenachricht an jedes seiner Ziele. |
| release_message | Veröffentlicht eine vorherige Nachrichtenreservierung. (Überschreibt source_block::release_message.) |
| reserve_message | Reserviert eine Nachricht, die zuvor von diesem join Nachrichtenblock angeboten wurde. (Überschreibt source_block::reserve_message.) |
| resume_propagation | Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde. (Überschreibt source_block::resume_propagation.) |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".
Vererbungshierarchie
join
Anforderungen
Header: agents.h
Namespace: Parallelität
accept_message
Akzeptiert eine Nachricht, die von diesem join Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer.
virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity angebotene message Objekt.
Rückgabewert
Ein Zeiger auf das message Objekt, dessen Besitzer der Aufrufer jetzt ist.
consume_message
Nutzt eine Nachricht, die join zuvor vom Messaging-Block angeboten und vom Ziel reserviert wurde und den Besitz an den Anrufer überträgt.
virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity Objekt, das message verbraucht wird.
Rückgabewert
Ein Zeiger auf das message Objekt, dessen Besitzer der Aufrufer jetzt ist.
Hinweise
Ähnlich wie accept, aber wird immer ein Aufruf von reserve.
Verknüpfen
Erstellt einen join -Meldungsblock.
join(
size_t _NumInputs);
join(
size_t _NumInputs,
filter_method const& _Filter);
join(
Scheduler& _PScheduler,
size_t _NumInputs);
join(
Scheduler& _PScheduler,
size_t _NumInputs,
filter_method const& _Filter);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs,
filter_method const& _Filter);
Parameter
_NumInputs
Die Anzahl der Eingaben, die dieser join Block zulässt.
_Filter
Eine Filterfunktion, die bestimmt, ob angebotene Nachrichten akzeptiert werden sollen.
_PScheduler
Das Scheduler -Objekt, in dem die Weiterleitungsaufgabe für den join -Meldungsblock geplant ist.
_PScheduleGroup
Das ScheduleGroup -Objekt, in dem die Weiterleitungsaufgabe für den join -Meldungsblock geplant ist. Das verwendete Scheduler -Objekt wird von der Planungsgruppe impliziert.
Hinweise
Die Runtime verwendet das Standardplanungsprogramm, wenn Sie den _PScheduler -Parameter oder den _PScheduleGroup -Parameter nicht angeben.
Der Typ filter_method ist ein Functor mit Signatur bool (T const &) , der von diesem join Messagingblock aufgerufen wird, um zu bestimmen, ob eine angebotene Nachricht akzeptiert werden soll.
~verbinden
Zerstört den join Block.
~join();
link_target_notification
Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem join Messagingblock verknüpft wurde.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propagate_message
Eine Nachricht wird asynchron von einem ISource Block an diesen join Nachrichtenblock übergeben. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parameter
_PMessage
Ein Zeiger auf das message-Objekt.
_PSource
Ein Zeiger auf den Quellblock, der die Nachricht anbietet.
Rückgabewert
Ein message_status Hinweis darauf, was das Ziel mit der Nachricht zu tun hat.
propagate_to_any_targets
Erstellt eine Ausgabenachricht, die eine Eingabenachricht aus jeder Quelle enthält, wenn sie alle eine Nachricht weitergegeben haben. Sendet diese Ausgabenachricht an jedes seiner Ziele.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
release_message
Veröffentlicht eine vorherige Nachrichtenreservierung.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity Objekt, das message freigegeben wird.
reserve_message
Reserviert eine Nachricht, die zuvor von diesem join Nachrichtenblock angeboten wurde.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Das runtime_object_identity angebotene message Objekt.
Rückgabewert
true wenn die Nachricht erfolgreich reserviert wurde, false andernfalls.
Hinweise
Nach reserve dem Aufruf, wenn er zurückgegeben truewird, oder release muss aufgerufen werden, consume um entweder den Besitz der Nachricht zu übernehmen oder freizugeben.
resume_propagation
Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde.
virtual void resume_propagation();