Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
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();
upozornění_na_cíl_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.
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