multitype_join – třída
multitype_join
Blok zasílání zpráv je blok pro více zdrojových zpráv s jedním cílem, který kombinuje zprávy různých typů z jednotlivých zdrojů a nabízí řazenou kolekci sloučených zpráv pro své cíle.
Syntaxe
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
Parametry
T
Typ tuple
datové části připojených zpráv a šířený blokem.
_Jtype
Druh join
bloku je, buď greedy
nebo non_greedy
Členové
Veřejné definice typedef
Jméno | popis |
---|---|
type |
Alias typu pro T . |
Veřejné konstruktory
Jméno | popis |
---|---|
multitype_join | Přetíženo. multitype_join Vytvoří blok zasílání zpráv. |
~multitype_join Destruktor | multitype_join Zničí blok zasílání zpráv. |
Veřejné metody
Jméno | popis |
---|---|
Přijmout | Přijme zprávu, kterou tento multitype_join blok nabízí, a přenese vlastnictví volajícímu. |
acquire_ref | Získá referenční počet na tento multitype_join blok zasílání zpráv, aby se zabránilo odstranění. |
Konzumovat | Využívá dříve nabízenou zprávu blokem multitype_join zasílání zpráv a úspěšně rezervováno cílem a převádí vlastnictví volajícímu. |
link_target | Pro propojení cílového bloku s tímto multitype_join blokem zasílání zpráv. |
Vydání | Uvolní předchozí úspěšnou rezervaci zpráv. |
release_ref | Uvolní referenční počet na tento multiple_join blok zasílání zpráv. |
Rezervy | Zarezervuje dříve nabízenou zprávu v tomto multitype_join bloku zasílání zpráv. |
unlink_target | Zruší propojení cílového bloku s tímto multitype_join blokem zasílání zpráv. |
unlink_targets | Zruší propojení všech cílů z tohoto multitype_join bloku zasílání zpráv. (Přepsání ISource::unlink_targets.) |
Poznámky
Další informace naleznete v tématu Asynchronní bloky zpráv.
Hierarchie dědičnosti
multitype_join
Požadavky
Hlavička: agents.h
Obor názvů: souběžnost
accept
Přijme zprávu, kterou tento multitype_join
blok nabízí, a přenese vlastnictví volajícímu.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_MsgId
message
Nabízený runtime_object_identity
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu accept
.
Vrácená hodnota
Ukazatel na zprávu, že volající teď má vlastnictví.
acquire_ref
Získá referenční počet na tento multitype_join
blok zasílání zpráv, aby se zabránilo odstranění.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Ukazatel na cílový blok, který tuto metodu volá.
Poznámky
Tato metoda je volána objektem ITarget
, který je propojen s tímto zdrojem během link_target
metody.
consume
Využívá dříve nabízenou zprávu blokem multitype_join
zasílání zpráv a úspěšně rezervováno cílem a převádí vlastnictví volajícímu.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_MsgId
Rezervovaný runtime_object_identity
message
objekt.
_PTarget
Ukazatel na cílový blok, který volá metodu consume
.
Vrácená hodnota
Ukazatel na message
objekt, ke kterému má volající nyní vlastnictví.
Poznámky
Metoda consume
je podobná accept
, ale musí být vždy před voláním reserve
vráceného true
.
link_target
Pro propojení cílového bloku s tímto multitype_join
blokem zasílání zpráv.
virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Ukazatel na blok pro propojení s tímto multitype_join
blokem ITarget
zasílání zpráv.
multitype_join
multitype_join
Vytvoří blok zasílání zpráv.
explicit multitype_join(
T _Tuple);
multitype_join(
Scheduler& _PScheduler,
T _Tuple);
multitype_join(
ScheduleGroup& _PScheduleGroup,
T _Tuple);
multitype_join(
multitype_join&& _Join);
Parametry
_Tuple
A tuple
zdrojů pro tento multitype_join
blok zasílání zpráv.
_PScheduler
Objekt Scheduler
, ve kterém je naplánována úloha šíření bloku multitype_join
zasílání zpráv.
_PScheduleGroup
Objekt ScheduleGroup
, ve kterém je naplánována úloha šíření bloku multitype_join
zasílání zpráv. Použitý Scheduler
objekt je odvozen ze skupiny plánů.
_Připojit
Blok multitype_join
zasílání zpráv, ze které se má kopírovat. Všimněte si, že původní objekt je osamocený, takže se jedná o konstruktor přesunutí.
Poznámky
Modul runtime používá výchozí plánovač, pokud nezadáte _PScheduler
parametry._PScheduleGroup
Konstrukce přesunu se neprovádí pod zámkem, což znamená, že je na uživateli, aby se zajistilo, že v době pohybu nejsou žádné úkoly s lehkou hmotností. V opačném případě může dojít k mnoha rasám, což vede k výjimkám nebo nekonzistentnímu stavu.
~multitype_join
multitype_join
Zničí blok zasílání zpráv.
~multitype_join();
Vydání
Uvolní předchozí úspěšnou rezervaci zpráv.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_MsgId
Uvolnění runtime_object_identity
objektu message
.
_PTarget
Ukazatel na cílový blok, který volá metodu release
.
release_ref
Uvolní referenční počet na tento multiple_join
blok zasílání zpráv.
virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Ukazatel na cílový blok, který tuto metodu volá.
Poznámky
Tato metoda je volána ITarget
objektem, který je odpojen od tohoto zdroje. Zdrojový blok může uvolnit všechny prostředky rezervované pro cílový blok.
Rezervy
Zarezervuje dříve nabízenou zprávu v tomto multitype_join
bloku zasílání zpráv.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_MsgId
Objekt runtime_object_identity
, který message
je rezervován.
_PTarget
Ukazatel na cílový blok, který volá metodu reserve
.
Vrácená hodnota
true
pokud byla zpráva úspěšně rezervována, false
jinak. Rezervace můžou selhat z mnoha důvodů, mezi které patří: zpráva už byla rezervována nebo přijata jiným cílem, zdroj mohl rezervace odepřít atd.
Poznámky
Jakmile zavoláte reserve
, pokud bude úspěšné, musíte zavolat buď consume
nebo release
v zájmu převzetí nebo vzdání vlastnictví zprávy, v uvedeném pořadí.
unlink_target
Zruší propojení cílového bloku s tímto multitype_join
blokem zasílání zpráv.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Ukazatel na blok pro ITarget
zrušení propojení s tímto multitype_join
blokem zasílání zpráv.
unlink_targets
Zruší propojení všech cílů z tohoto multitype_join
bloku zasílání zpráv.
virtual void unlink_targets();
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro