multitype_join — Klasa
multitype_join
Blok obsługi komunikatów to wieloźródłowy, pojedynczy docelowy blok obsługi komunikatów, który łączy komunikaty różnych typów z każdego ze swoich źródeł i oferuje krotkę połączonych komunikatów do swoich celów.
Składnia
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
Parametry
T
tuple
Typ ładunku komunikatów sprzężonych i propagowanych przez blok.
_Jtype
Rodzaj join
bloku jest albo greedy
albo non_greedy
Członkowie
Definicje typów publicznych
Nazwa/nazwisko | opis |
---|---|
type |
Alias typu dla elementu T . |
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
Multitype_join | Przeciążone. multitype_join Tworzy blok obsługi komunikatów. |
~multitype_join Destruktor | Niszczy blok obsługi komunikatów multitype_join . |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
Zaakceptować | Akceptuje komunikat oferowany przez ten multitype_join blok, przenosząc własność na obiekt wywołujący. |
acquire_ref | Uzyskuje liczbę odwołań w tym multitype_join bloku obsługi komunikatów, aby zapobiec usunięciu. |
Zużywają | Korzysta z komunikatu oferowanego wcześniej przez multitype_join blok obsługi komunikatów i pomyślnie zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego. |
link_target | Łączy blok docelowy z tym multitype_join blokiem obsługi komunikatów. |
Wydania | Zwalnia poprzednią pomyślną rezerwację komunikatów. |
release_ref | Zwalnia liczbę odwołań dla tego multiple_join bloku obsługi komunikatów. |
Rezerwy | Rezerwuje komunikat, który był wcześniej oferowany przez ten multitype_join blok obsługi komunikatów. |
unlink_target | Odłącza blok docelowy od tego multitype_join bloku obsługi komunikatów. |
unlink_targets | Odłącza wszystkie obiekty docelowe z tego multitype_join bloku obsługi komunikatów. (Przesłonięcia) ISource::unlink_targets.) |
Uwagi
Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.
Hierarchia dziedziczenia
multitype_join
Wymagania
Nagłówek: agents.h
Przestrzeń nazw: współbieżność
akceptuj
Akceptuje komunikat oferowany przez ten multitype_join
blok, przenosząc własność na obiekt wywołujący.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_Msgid
Obiekt runtime_object_identity
oferowany message
.
_PTarget
Wskaźnik do bloku docelowego wywołującego metodę accept
.
Wartość zwracana
Wskaźnik do komunikatu, że obiekt wywołujący ma teraz własność.
acquire_ref
Uzyskuje liczbę odwołań w tym multitype_join
bloku obsługi komunikatów, aby zapobiec usunięciu.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Wskaźnik do bloku docelowego wywołującego tę metodę.
Uwagi
Ta metoda jest wywoływana przez ITarget
obiekt połączony z tym źródłem podczas link_target
metody .
consume
Korzysta z komunikatu oferowanego wcześniej przez multitype_join
blok obsługi komunikatów i pomyślnie zarezerwowanego przez obiekt docelowy, przenosząc własność do obiektu wywołującego.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_Msgid
Obiekt runtime_object_identity
zarezerwowany message
.
_PTarget
Wskaźnik do bloku docelowego wywołującego metodę consume
.
Wartość zwracana
Wskaźnik do message
obiektu, którego obiekt wywołujący ma teraz własność.
Uwagi
Metoda jest podobna consume
do accept
metody , ale zawsze musi być poprzedzona wywołaniem metody , która reserve
zwróciła true
wartość .
link_target
Łączy blok docelowy z tym multitype_join
blokiem obsługi komunikatów.
virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Wskaźnik do ITarget
bloku, aby połączyć się z tym multitype_join
blokiem obsługi komunikatów.
Multitype_join
multitype_join
Tworzy blok obsługi komunikatów.
explicit multitype_join(
T _Tuple);
multitype_join(
Scheduler& _PScheduler,
T _Tuple);
multitype_join(
ScheduleGroup& _PScheduleGroup,
T _Tuple);
multitype_join(
multitype_join&& _Join);
Parametry
_Krotki
Źródło tuple
tego multitype_join
bloku obsługi komunikatów.
_PScheduler
Obiekt Scheduler
, w którym zaplanowano zadanie multitype_join
propagacji bloku obsługi komunikatów.
_PScheduleGroup
Obiekt ScheduleGroup
, w którym zaplanowano zadanie multitype_join
propagacji bloku obsługi komunikatów. Używany Scheduler
obiekt jest dorozumiany przez grupę harmonogramu.
_Dołączyć
multitype_join
Blok obsługi komunikatów do skopiowania. Należy pamiętać, że oryginalny obiekt jest oddzielony, dzięki czemu jest to konstruktor przenoszenia.
Uwagi
Jeśli nie określisz parametrów lub_PScheduleGroup
, środowisko uruchomieniowe używa domyślnego _PScheduler
harmonogramu.
Budowa przenoszenia nie jest wykonywana w ramach blokady, co oznacza, że jest to do użytkownika, aby upewnić się, że w czasie przenoszenia nie ma lekkich zadań w locie. W przeciwnym razie może wystąpić wiele wyścigów, co prowadzi do wyjątków lub niespójnego stanu.
~Multitype_join
Niszczy blok obsługi komunikatów multitype_join
.
~multitype_join();
Wydania
Zwalnia poprzednią pomyślną rezerwację komunikatów.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_Msgid
message
Obiektruntime_object_identity
, który jest zwalniany.
_PTarget
Wskaźnik do bloku docelowego wywołującego metodę release
.
release_ref
Zwalnia liczbę odwołań dla tego multiple_join
bloku obsługi komunikatów.
virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Wskaźnik do bloku docelowego wywołującego tę metodę.
Uwagi
Ta metoda jest wywoływana przez ITarget
obiekt, który jest odłączony od tego źródła. Blok źródłowy może zwolnić wszystkie zasoby zarezerwowane dla bloku docelowego.
Rezerwy
Rezerwuje komunikat, który był wcześniej oferowany przez ten multitype_join
blok obsługi komunikatów.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_Msgid
Obiekt runtime_object_identity
message
, który jest zarezerwowany.
_PTarget
Wskaźnik do bloku docelowego wywołującego metodę reserve
.
Wartość zwracana
true
jeśli wiadomość została pomyślnie zarezerwowana, false
w przeciwnym razie. Rezerwacje mogą zakończyć się niepowodzeniem z wielu powodów, w tym: komunikat został już zarezerwowany lub zaakceptowany przez inny obiekt docelowy, źródło może odmówić rezerwacji itd.
Uwagi
Po wywołaniu reserve
metody , jeśli się powiedzie, musisz zadzwonić consume
do lub release
w celu podjęcia lub rezygnacji z posiadania wiadomości, odpowiednio.
unlink_target
Odłącza blok docelowy od tego multitype_join
bloku obsługi komunikatów.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parametry
_PTarget
Wskaźnik do ITarget
bloku, aby odłączyć się od tego multitype_join
bloku obsługi komunikatów.
unlink_targets
Odłącza wszystkie obiekty docelowe z tego multitype_join
bloku obsługi komunikatów.
virtual void unlink_targets();
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla