Udostępnij za pośrednictwem


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

Isource

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 acceptmetody , ale zawsze musi być poprzedzona wywołaniem metody , która reserve zwróciła truewartość .

Łą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_identitymessage , 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 reservemetody , jeśli się powiedzie, musisz zadzwonić consume do lub release w celu podjęcia lub rezygnacji z posiadania wiadomości, odpowiednio.

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.

Odłącza wszystkie obiekty docelowe z tego multitype_join bloku obsługi komunikatów.

virtual void unlink_targets();

Zobacz też

Przestrzeń nazw współbieżności
choice, klasa
join, klasa