multitype_join-Klasse
Ein multitype_join
-Meldungsblock ist ein Block mit mehreren Quellen und einem einzelnen Ziel, der Meldungen verschiedener Typen aus allen Quellen kombiniert und dem Ziel ein Tupel der kombinierten Meldungen bereitstellt.
Syntax
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
Parameter
T
Der tuple
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 Typedefs
Name | Beschreibung |
---|---|
type |
Ein Typalias für T . |
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
Multitype_join | Überladen. Erstellt einen multitype_join -Meldungsblock. |
~multitype_join Destruktor | Zerstört den multitype_join Nachrichtenblock. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
Akzeptieren | Akzeptiert eine Nachricht, die von diesem multitype_join Block angeboten wurde, und überträgt den Besitz an den Anrufer. |
acquire_ref | Dient zum Abrufen einer Verweisanzahl für diesen multitype_join Nachrichtenblock, um das Löschen zu verhindern. |
Nutzen | Nutzt eine Nachricht, die multitype_join zuvor vom Nachrichtenblock angeboten und erfolgreich vom Ziel reserviert wurde und den Besitz an den Anrufer überträgt. |
link_target | Verknüpft einen Zielblock mit diesem multitype_join Messaging-Block. |
release | Veröffentlicht eine vorherige erfolgreiche Nachrichtenreservierung. |
release_ref | Gibt eine Referenzanzahl für diesen multiple_join Messaging-Block frei. |
reserve | Reserviert eine Nachricht, die zuvor von diesem multitype_join Nachrichtenblock angeboten wurde. |
unlink_target | Hebt die Verknüpfung eines Zielblocks von diesem multitype_join Nachrichtenblock auf. |
unlink_targets | Hebt die Verknüpfung aller Ziele von diesem multitype_join Nachrichtenblock auf. (Außerkraftsetzungen ISource::unlink_targets.) |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".
Vererbungshierarchie
multitype_join
Anforderungen
Header: agents.h
Namespace: Parallelität
Akzeptieren
Akzeptiert eine Nachricht, die von diesem multitype_join
Block angeboten wurde, und überträgt den Besitz an den Anrufer.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_Msgid
Das runtime_object_identity
angebotene message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die accept
Methode aufruft.
Rückgabewert
Ein Zeiger auf die Nachricht, deren Besitzer der Aufrufer jetzt ist.
acquire_ref
Dient zum Abrufen einer Verweisanzahl für diesen multitype_join
Nachrichtenblock, um das Löschen zu verhindern.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der diese Methode aufruft.
Hinweise
Diese Methode wird von einem ITarget
Objekt aufgerufen, das während der link_target
Methode mit dieser Quelle verknüpft wird.
nutzen
Nutzt eine Nachricht, die multitype_join
zuvor vom Nachrichtenblock angeboten und erfolgreich vom Ziel reserviert wurde und den Besitz an den Anrufer überträgt.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_Msgid
Das runtime_object_identity
reservierte message
Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die consume
Methode aufruft.
Rückgabewert
Ein Zeiger auf das message
Objekt, dessen Besitzer der Aufrufer jetzt ist.
Hinweise
Die consume
Methode ähnelt accept
, muss jedoch immer einem Aufruf dieser reserve
zurückgegebenen Methode true
vorangestellt werden.
link_target
Verknüpft einen Zielblock mit diesem multitype_join
Messaging-Block.
virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Ein Zeiger auf einen ITarget
Block zum Verknüpfen mit diesem multitype_join
Nachrichtenblock.
Multitype_join
Erstellt einen multitype_join
-Meldungsblock.
explicit multitype_join(
T _Tuple);
multitype_join(
Scheduler& _PScheduler,
T _Tuple);
multitype_join(
ScheduleGroup& _PScheduleGroup,
T _Tuple);
multitype_join(
multitype_join&& _Join);
Parameter
_Tupel
Ein tuple
von Quellen für diesen multitype_join
-Meldungsblock.
_PScheduler
Das Scheduler
-Objekt, in dem die Weiterleitungsaufgabe für den multitype_join
-Meldungsblock geplant ist.
_PScheduleGroup
Das ScheduleGroup
-Objekt, in dem die Weiterleitungsaufgabe für den multitype_join
-Meldungsblock geplant ist. Das verwendete Scheduler
-Objekt wird von der Planungsgruppe impliziert.
_Beitreten
Ein multitype_join
-Meldungsblock, aus dem kopiert werden soll. Beachten Sie, dass das ursprüngliche Objekt verwaist ist, sodass dies ein Bewegungskonstruktor ist.
Hinweise
Die Runtime verwendet das Standardplanungsprogramm, wenn Sie den _PScheduler
-Parameter oder den _PScheduleGroup
-Parameter nicht angeben.
Bewegungskonstruktion wird bei einer aktiven Sperre nicht ausgeführt, d. h., der Benutzer muss sicherstellen, dass zum Zeitpunkt der Bewegung keine einfachen Aufgaben aktiv sind. Andernfalls können zahlreiche Wettläufe auftreten, wodurch Ausnahmen oder inkonsistente Zuständen verursacht werden.
~Multitype_join
Zerstört den multitype_join
Nachrichtenblock.
~multitype_join();
Freigabe
Veröffentlicht eine vorherige erfolgreiche Nachrichtenreservierung.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_Msgid
Das runtime_object_identity
Objekt, das message
freigegeben wird.
_PTarget
Ein Zeiger auf den Zielblock, der die release
Methode aufruft.
release_ref
Gibt eine Referenzanzahl für diesen multiple_join
Messaging-Block frei.
virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der diese Methode aufruft.
Hinweise
Diese Methode wird von einem ITarget
Objekt aufgerufen, das von dieser Quelle nicht verknüpft wird. Der Quellblock darf alle Ressourcen freigeben, die für den Zielblock reserviert sind.
Reserve
Reserviert eine Nachricht, die zuvor von diesem multitype_join
Nachrichtenblock angeboten wurde.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_Msgid
Das runtime_object_identity
Objekt, das message
reserviert wird.
_PTarget
Ein Zeiger auf den Zielblock, der die reserve
Methode aufruft.
Rückgabewert
true
wenn die Nachricht erfolgreich reserviert wurde, false
andernfalls. Reservierungen können aus vielen Gründen fehlschlagen, einschließlich: Die Nachricht wurde bereits von einem anderen Ziel reserviert oder akzeptiert, die Quelle konnte Vorbehalte verweigern usw.
Hinweise
Nach dem Anruf reserve
müssen Sie, falls dies erfolgreich ist, entweder consume
anrufen, oder release
um den Besitz der Nachricht zu übernehmen oder aufzugeben.
unlink_target
Hebt die Verknüpfung eines Zielblocks von diesem multitype_join
Nachrichtenblock auf.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Ein Zeiger auf einen ITarget
Block, um die Verknüpfung von diesem multitype_join
Nachrichtenblock aufzuheben.
unlink_targets
Hebt die Verknüpfung aller Ziele von diesem multitype_join
Nachrichtenblock auf.
virtual void unlink_targets();
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für