připojit se k třídě

join Blok zasílání zpráv je jednocílový, vícezdrojový a uspořádaný propagator_block, který kombinuje zprávy typu T z každého ze svých zdrojů.

Syntaxe

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

Parametry

T
Typ datové části zpráv, které jsou připojeny a šířeny blokem.

_Jtype
Druh join bloku je, buď greedy nebo non_greedy

Členové

Veřejné konstruktory

Název Popis
join Přetíženo. Vytvoří join blok pro zasílání zpráv.
~join destruktor join Zničí blok.

Chráněné metody

Název Popis
přijmout_zprávu Přijme zprávu, kterou tento join blok zasílání zpráv nabízí, a přenese vlastnictví volajícímu.
consume_message Využívá zprávu, kterou dříve nabízel blok join pro zpracování zpráv a kterou vyhradilo cílové místo, čímž převádí vlastnictví na volajícího.
oznámení_o_cíli_odkazu Funkce zpětného volání, která upozorní na propojení nového cíle s tímto join blokem zasílání zpráv.
propagate_message Asynchronně předává zprávu z ISource bloku do tohoto join bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.
šířit_na_jakékoliv_cíle Vytvoří výstupní zprávu obsahující vstupní zprávu z každého zdroje, když všechny šíří zprávu. Odešle tuto výstupní zprávu do každého z cílů.
release_message Uvolní předchozí rezervaci zpráv. (Přepisuje source_block::release_message.)
rezervační_zpráva Zarezervuje dříve nabízenou zprávu v tomto join bloku zasílání zpráv. (Přepisuje source_block::reserve_message.)
resume_propagation Po uvolnění rezervace se obnoví šíření. (Přepsání source_block::resume_propagation.)

Poznámky

Další informace naleznete v tématu Asynchronní bloky zpráv.

Hierarchie dědičnosti

ISource

ITarget

source_block

propagátorový_blok

join

Požadavky

Hlavička: agents.h

Obor názvů: souběžnost

přijmout_zprávu

Přijme zprávu, kterou tento join blok zasílání zpráv nabízí, a přenese vlastnictví volajícímu.

virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity Nabízený message objekt.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

zpracovat_zprávu

Využívá zprávu, kterou dříve nabízel blok join pro zpracování zpráv a kterou vyhradilo cílové místo, čímž převádí vlastnictví na volajícího.

virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity objektu message, který je spotřebováván.

Návratová hodnota

Ukazatel na message objekt, ke kterému má volající nyní vlastnictví.

Poznámky

Podobá se accept, ale vždy mu předchází volání reserve.

připojit

Vytvoří join blok pro zasílání zpráv.

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

Parametry

_NumInputs
Počet vstupů, které tento join blok povolí.

_Filtr
Funkce filtru, která určuje, jestli mají být přijaté zprávy.

_PScheduler
Objekt Scheduler , ve kterém je naplánována úloha šíření bloku join zasílání zpráv.

_PScheduleGroup
Objekt ScheduleGroup , ve kterém je naplánována úloha šíření bloku join zasílání zpráv. Použití Scheduler objektu je dané skupinou plánů.

Poznámky

Modul runtime používá výchozí plánovač, pokud nezadáte buď parametr _PScheduler nebo parametr _PScheduleGroup.

Typ filter_method je functor s podpisem bool (T const &) , který je vyvolán tímto join blokem zasílání zpráv, aby určil, zda má přijmout nabízenou zprávu.

~připojit

join Zničí blok.

~join();

Funkce zpětného volání, která upozorní na propojení nového cíle s tímto join blokem zasílání zpráv.

virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);

šířit_zprávu

Asynchronně předává zprávu z ISource bloku do tohoto join bloku zasílání zpráv. Vyvolá se metodou propagate při zavolání zdrojovým blokem.

message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

Parametry

_PMessage
Ukazatel na message objekt.

_PSource
Ukazatel na zdrojový blok nabízející zprávu.

Návratová hodnota

Message_status indikace toho, co se cíl rozhodl udělat se zprávou.

šířit na všechny cíle

Vytvoří výstupní zprávu obsahující vstupní zprávu z každého zdroje, když všechny šíří zprávu. Odešle tuto výstupní zprávu do každého z cílů.

void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);

zpráva o vydání

Uvolní předchozí rezervaci zpráv.

virtual void release_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Uvolnění runtime_object_identity objektu message .

rezervovat_zprávu

Zarezervuje dříve nabízenou zprávu v tomto join bloku zasílání zpráv.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametry

_MsgId
runtime_object_identity Nabízený message objekt.

Návratová hodnota

true pokud byla zpráva úspěšně rezervována, jinak false.

Poznámky

Po zavolání reserve, pokud se vrátí true, musí být buď consume nebo release zavolána, aby došlo k převzetí nebo uvolnění vlastnictví zprávy.

resume_propagation

Po uvolnění rezervace se obnoví šíření.

virtual void resume_propagation();

Viz také

concurrency – obor názvů
choice – třída
Třída multitype_join