Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Een join berichtenblok is een berichtenblok met één doel, meerdere bronnen, geordend propagator_block , waarin berichten van het type T van elk van de bronnen worden gecombineerd.
Syntaxis
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>>>;
Parameterwaarden
T
Het payloadtype van de berichten die door het blok worden toegevoegd en doorgegeven.
_Jtype
Het soort join blok dat dit is, ofwel greedy of non_greedy
Leden
Openbare constructors
| Naam | Description |
|---|---|
| join | Overbelast. Maakt een join berichtenblok. |
| ~Join Destructor | Vernietigt het join blok. |
Beveiligde methoden
| Naam | Description |
|---|---|
| accept_message | Accepteert een bericht dat door dit join berichtenblok is aangeboden, waardoor het eigendom wordt overgedragen aan de beller. |
| consume_message | Gebruikt een bericht dat eerder is aangeboden door het join berichtenblok en gereserveerd door het doel, waardoor het eigendom wordt overgedragen aan de beller. |
| link_doelmelding | Een callback waarmee wordt aangegeven dat een nieuw doel is gekoppeld aan dit join berichtenblok. |
| propagate_message | Asynchroon geeft een bericht van een ISource blok door aan dit join berichtenblok. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok. |
| doorgeven_aan_alle_doelen | Hiermee wordt een uitvoerbericht samengesteld dat een invoerbericht van elke bron bevat wanneer ze allemaal een bericht hebben doorgegeven. Dit uitvoerbericht wordt hiermee naar elk van de bestemmingen verzonden. |
| release_message | Maakt een eerdere reservering van een bericht vrij. (Overschrijft source_block::release_message.) |
| reserve_message | Reserveert een bericht dat eerder door dit join berichtenblok is aangeboden. (Overschrijft source_block::reserve_message.) |
| resume_propagation | De voortzetting wordt hervat nadat een reservering is vrijgegeven. (Overschrijft source_block::resume_propagation.) |
Opmerkingen
Zie Asynchrone berichtblokken voor meer informatie.
Overnamehiërarchie
join
Requirements
Header: agents.h
Naamruimte: concurrentie
accepteer_bericht
Accepteert een bericht dat door dit join berichtenblok is aangeboden, waardoor het eigendom wordt overgedragen aan de beller.
virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity van het aangeboden message object.
Retourwaarde
Een aanwijzer naar het message object waarvan de aanroeper nu eigenaar is.
consume_message
Verbruikt een bericht dat eerder is aangeboden door het join berichtenblok en gereserveerd door het doelwit, waarbij de eigendom wordt overgedragen aan de aanroeper.
virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity van het message-object dat wordt gebruikt.
Retourwaarde
Een aanwijzer naar het message object waarvan de aanroeper nu eigenaar is.
Opmerkingen
Vergelijkbaar met accept, maar wordt altijd voorafgegaan door een aanroep naar reserve.
deelnemen
Maakt een join berichtenblok.
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);
Parameterwaarden
_NumInputs
Het aantal invoer dat dit join blok invoert, wordt toegestaan.
_Filter
Een filterfunctie die bepaalt of aangeboden berichten moeten worden geaccepteerd.
_PScheduler
Het Scheduler-object waarin de doorgiftetaak voor het berichtblok join is gepland.
_PScheduleGroup
Het ScheduleGroup-object waarin de doorgiftetaak voor het berichtblok join is gepland. Het gebruikte Scheduler-object wordt geïmpliceerd door de planningsgroep.
Opmerkingen
De runtime gebruikt de standaardplanner als u de _PScheduler of _PScheduleGroup parameters niet opgeeft.
Het type filter_method is een functor met handtekening bool (T const &) die wordt aangeroepen door dit join berichtenblok om te bepalen of het een aangeboden bericht moet accepteren.
~Aansluiten
Vernietigt het join blok.
~join();
link_doel_melding
Een callback waarmee wordt aangegeven dat een nieuw doel is gekoppeld aan dit join berichtenblok.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propagate_message
Asynchroon geeft een bericht van een ISource blok door aan dit join berichtenblok. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok.
message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parameterwaarden
_PMessage
Een aanwijzer naar het message object.
_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.
Retourwaarde
Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.
propageren_naar_alle_doelen
Hiermee wordt een uitvoerbericht samengesteld dat een invoerbericht van elke bron bevat wanneer ze allemaal een bericht hebben doorgegeven. Dit uitvoerbericht wordt hiermee naar elk van de bestemmingen verzonden.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
releasemededeling
Maakt een eerdere reservering van een bericht vrij.
virtual void release_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity object message dat wordt vrijgegeven.
reserve_message
Reserveert een bericht dat eerder door dit join berichtenblok is aangeboden.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameterwaarden
_MsgId
Het runtime_object_identity van het aangeboden message object.
Retourwaarde
true als het bericht succesvol is gereserveerd, false anders.
Opmerkingen
Nadat reserve is aangeroepen en true wordt geretourneerd, moet ofwel consume of release worden aangeroepen om het eigendom van het bericht over te nemen of vrij te geven.
resume_propagation
De voortzetting wordt hervat nadat een reservering is vrijgegeven.
virtual void resume_propagation();