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.
Die ISource-Klasse ist die Schnittstelle für alle Quellblöcke. Quellblöcke geben Meldungen an ITarget-Blöcke weiter.
Syntax
template<class T>
class ISource;
Parameter
T
Der Datentyp der Nutzlast innerhalb der vom Quellblock erzeugten Nachrichten.
Mitglieder
Öffentliche Typedefs
| Name | Beschreibung |
|---|---|
source_type |
Ein Typalias für T. |
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
| ~ISource Destructor | Zerstört das ISource-Objekt. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| annehmen | Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, akzeptiert sie eine Nachricht, die von diesem ISource Block angeboten wurde, und überträgt den Besitz an den Aufrufer. |
| referenz_erwerben | Wenn es in einer abgeleiteten Klasse überschrieben wird, erhält dieser ISource Block einen Referenzzähler, um das Löschen zu verhindern. |
| Verbrauchen | Wenn sie in einer abgeleiteten Klasse überschrieben wird, verarbeitet sie eine Nachricht, die zuvor von diesem ISource Block angeboten und erfolgreich durch das Ziel reserviert wurde, wodurch der Besitz an den Aufrufer übergeht. |
| link_target | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Zielblock mit diesem ISource Block verknüpft. |
| Freigabe | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine vorherige erfolgreiche Nachrichtenreservierung freigegeben. |
| release_ref | Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird für diesen ISource Block eine Referenzanzahl freigegeben. |
| reserve | Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, reserviert sie eine Nachricht, die zuvor von diesem ISource Block angeboten wurde. |
| unlink_target | Wenn er in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die Verknüpfung eines Zielblocks von diesem ISource Block gelöst, wenn er zuvor verknüpft war. |
| unlink_targets | Wenn sie in einer abgeleiteten Klasse überschrieben wird, entfernt diese Methode alle Zielblöcke von diesem ISource Block. |
Hinweise
Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".
Vererbungshierarchie
ISource
Anforderungen
Header: agents.h
Namespace: Parallelität
Akzeptieren
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, akzeptiert sie eine Nachricht, die von diesem ISource Block angeboten wurde, und überträgt den Besitz an den Aufrufer.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
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.
Hinweise
Die accept Methode wird von einem Ziel aufgerufen, während eine Nachricht von diesem ISource Block angeboten wird. Der zurückgegebene Nachrichtenzeiger unterscheidet sich möglicherweise von dem, das an die propagate Methode des ITarget Blocks übergeben wird, wenn sich diese Quelle entscheidet, eine Kopie der Nachricht zu erstellen.
acquire_ref
Wenn es in einer abgeleiteten Klasse überschrieben wird, erhält dieser ISource Block einen Referenzzähler, um das Löschen zu verhindern.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
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.
verbrauchen
Wenn sie in einer abgeleiteten Klasse überschrieben wird, verarbeitet sie eine Nachricht, die zuvor von diesem ISource Block angeboten und erfolgreich durch das Ziel reserviert wurde, wodurch der Besitz an den Aufrufer übergeht.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
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 von einem Aufruf an reserve begleitet werden, der true zurückgegeben hat.
~ISource
Zerstört das ISource-Objekt.
virtual ~ISource();
link_target
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Zielblock mit diesem ISource Block verknüpft.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der mit diesem ISource Block verknüpft wird.
Freigabe
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird eine vorherige erfolgreiche Nachrichtenreservierung freigegeben.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity reservierte message Objekt.
_PTarget
Ein Zeiger auf den Zielblock, der die release Methode aufruft.
release_ref
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird für diesen ISource Block eine Referenzanzahl freigegeben.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der diese Methode aufruft.
Hinweise
Diese Methode wird von einem ITarget Objekt aufgerufen, das von dieser Quelle entkoppelt wird. Der Quellblock darf alle Ressourcen freigeben, die für den Zielblock reserviert sind.
Reserve
Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, reserviert sie eine Nachricht, die zuvor von diesem ISource Block angeboten wurde.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Das runtime_object_identity angebotene message Objekt.
_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 kann Reservierungen ablehnen, und so weiter.
Hinweise
Nach dem Aufrufen von reserve, wenn dies erfolgreich ist, müssen Sie entweder consume aufrufen oder release, um die Nachricht zu übernehmen oder abzugeben.
unlink_target
Wenn er in einer abgeleiteten Klasse außer Kraft gesetzt wird, wird die Verknüpfung eines Zielblocks von diesem ISource Block gelöst, wenn er zuvor verknüpft war.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Ein Zeiger auf den Zielblock, der von diesem ISource Block getrennt wird.
Zielverknüpfungen aufheben
Wenn sie in einer abgeleiteten Klasse überschrieben wird, entfernt diese Methode alle Zielblöcke von diesem ISource Block.
virtual void unlink_targets() = 0;