Freigeben über


overwrite_buffer-Klasse

Ein overwrite_buffer-Meldungsblock ist ein geordneter propagator_block mit mehreren Zielen und mehreren Quellen, der jeweils eine einzelne Meldung speichern kann. Neue Meldungen überschreiben zuvor Gespeicherte.

Syntax

template<class T>
class overwrite_buffer : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;

Parameter

T
Der Nutzlasttyp der vom Puffer gespeicherten und weitergegebenen Nachrichten.

Member

Öffentliche Konstruktoren

Name Beschreibung
overwrite_buffer Überladen. Erstellt einen overwrite_buffer Nachrichtenblock.
~overwrite_buffer Destruktor Zerstört den overwrite_buffer Nachrichtenblock.

Öffentliche Methoden

Name Beschreibung
has_value Überprüft, ob dieser overwrite_buffer Nachrichtenblock noch einen Wert aufweist.
value Ruft einen Verweis auf die aktuelle Nutzlast der Nachricht ab, die overwrite_buffer im Nachrichtenblock gespeichert wird.

Geschützte Methoden

Name Beschreibung
accept_message Akzeptiert eine Nachricht, die von diesem overwrite_buffer Nachrichtenblock angeboten wurde, und gibt eine Kopie der Nachricht an den Anrufer zurück.
consume_message Nutzt eine Nachricht, die overwrite_buffer zuvor vom Nachrichtenblock angeboten und vom Ziel reserviert wurde, und gibt eine Kopie der Nachricht an den Anrufer zurück.
link_target_notification Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem overwrite_buffer Messagingblock verknüpft wurde.
propagate_message Eine Nachricht wird asynchron von einem ISource Block an diesen overwrite_buffer Nachrichtenblock übergeben. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
propagate_to_any_targets Platziert den message _PMessage In diesem overwrite_buffer Messaging-Block und bietet ihn allen verknüpften Zielen an.
release_message Veröffentlicht eine vorherige Nachrichtenreservierung. (Überschreibt source_block::release_message.)
reserve_message Reserviert eine Nachricht, die zuvor von diesem overwrite_buffer Nachrichtenblock angeboten wurde. (Überschreibt source_block::reserve_message.)
resume_propagation Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde. (Überschreibt source_block::resume_propagation.)
send_message Übergibt eine Nachricht synchron von einem ISource Block an diesen overwrite_buffer Nachrichtenblock. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.
supports_anonymous_source Überschreibt die supports_anonymous_source Methode, um anzugeben, dass dieser Block Nachrichten akzeptieren kann, die von einer Quelle angeboten werden, die nicht verknüpft ist. (Außerkraftsetzungen ITarget::supports_anonymous_source.)

Hinweise

Ein overwrite_buffer Nachrichtenblock verteilt Kopien seiner gespeicherten Nachricht an jedes seiner Ziele.

Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".

Vererbungshierarchie

ISource

ITarget

source_block

propagator_block

overwrite_buffer

Anforderungen

Header: agents.h

Namespace: Parallelität

accept_message

Akzeptiert eine Nachricht, die von diesem overwrite_buffer Nachrichtenblock angeboten wurde, und gibt eine Kopie der Nachricht an den Anrufer zurück.

virtual message<T>* 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.

Hinweise

Der overwrite_buffer Nachrichtenblock gibt Kopien der Nachricht an seine Ziele zurück, anstatt den Besitz der aktuell gehaltenen Nachricht zu übertragen.

consume_message

Nutzt eine Nachricht, die overwrite_buffer zuvor vom Nachrichtenblock angeboten und vom Ziel reserviert wurde, und gibt eine Kopie der Nachricht an den Anrufer zurück.

virtual message<T>* 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.

has_value

Überprüft, ob dieser overwrite_buffer Nachrichtenblock noch einen Wert aufweist.

bool has_value() const;

Rückgabewert

true wenn der Block einen Wert erhalten hat, false andernfalls.

Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem overwrite_buffer Messagingblock verknüpft wurde.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Parameter

_PTarget
Ein Zeiger auf das neu verknüpfte Ziel.

~overwrite_buffer

Zerstört den overwrite_buffer Nachrichtenblock.

~overwrite_buffer();

overwrite_buffer

Erstellt einen overwrite_buffer Nachrichtenblock.

overwrite_buffer();

overwrite_buffer(
    filter_method const& _Filter);

overwrite_buffer(
    Scheduler& _PScheduler);

overwrite_buffer(
    Scheduler& _PScheduler,
    filter_method const& _Filter);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup,
    filter_method const& _Filter);

Parameter

_Filter
Eine Filterfunktion, die bestimmt, ob angebotene Nachrichten akzeptiert werden sollen.

_PScheduler
Das Scheduler -Objekt, in dem die Weiterleitungsaufgabe für den overwrite_buffer -Meldungsblock geplant ist.

_PScheduleGroup
Das ScheduleGroup -Objekt, in dem die Weiterleitungsaufgabe für den overwrite_buffer -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 overwrite_buffer Messagingblock aufgerufen wird, um zu bestimmen, ob eine angebotene Nachricht akzeptiert werden soll.

propagate_message

Eine Nachricht wird asynchron von einem ISource Block an diesen overwrite_buffer Nachrichtenblock übergeben. Sie wird von der propagate Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.

virtual 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

Platziert den message _PMessage In diesem overwrite_buffer Messaging-Block und bietet ihn allen verknüpften Zielen an.

virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);

Parameter

_PMessage
Ein Zeiger auf ein message Objekt, dessen Besitz dies overwrite_buffer übernommen hat.

Hinweise

Diese Methode überschreibt die aktuelle Nachricht in der overwrite_buffer neu angenommenen Nachricht _PMessage.

send_message

Übergibt eine Nachricht synchron von einem ISource Block an diesen overwrite_buffer Nachrichtenblock. Sie wird von der send Methode aufgerufen, wenn sie von einem Quellblock aufgerufen wird.

virtual message_status send_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.

supports_anonymous_source

Überschreibt die supports_anonymous_source Methode, um anzugeben, dass dieser Block Nachrichten akzeptieren kann, die von einer Quelle angeboten werden, die nicht verknüpft ist.

virtual bool supports_anonymous_source();

Rückgabewert

true da der Block die angebotenen Nachrichten nicht verschiebt.

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 overwrite_buffer Nachrichtenblock angeboten wurde.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parameter

_MsgId
Das runtime_object_identity Objekt, das message reserviert wird.

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

value

Ruft einen Verweis auf die aktuelle Nutzlast der Nachricht ab, die overwrite_buffer im Nachrichtenblock gespeichert wird.

T value();

Rückgabewert

Die Nutzlast der aktuell gespeicherten Nachricht.

Hinweise

Der in der overwrite_buffer Datei gespeicherte Wert kann sich unmittelbar nach dem Zurückgeben dieser Methode ändern. Diese Methode wartet, bis eine Nachricht eingeht, wenn derzeit keine Nachricht in der overwrite_buffer.

Siehe auch

Concurrency-Namespace
unbounded_buffer-Klasse
single_assignment-Klasse