Udostępnij za pośrednictwem


join — Klasa

join Blok obsługi komunikatów to jednokierunkowe, wieloźródło, uporządkowanepropagator_block, które łączy ze sobą komunikaty typu T z każdego ze swoich źródeł.

Składnia

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 ładunku komunikatów sprzężonych i propagowanych przez blok.

_Jtype
Rodzaj join bloku jest albo greedy albo non_greedy

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
join Przeciążone. join Tworzy blok obsługi komunikatów.
~join Destruktor join Niszczy blok.

Metody chronione

Nazwa/nazwisko opis
accept_message Akceptuje komunikat oferowany przez ten join blok obsługi komunikatów, przenosząc własność na obiekt wywołujący.
consume_message Używa komunikatu oferowanego wcześniej przez join blok obsługi komunikatów i zarezerwowany przez obiekt docelowy, przenosząc własność do obiektu wywołującego.
link_target_notification Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym join blokiem obsługi komunikatów.
propagate_message Asynchronicznie przekazuje komunikat z ISource bloku do tego join bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy.
propagate_to_any_targets Tworzy komunikat wyjściowy zawierający komunikat wejściowy z każdego źródła, gdy wszystkie zostały rozpropagowane komunikat. Wysyła ten komunikat wyjściowy do każdego z jego obiektów docelowych.
release_message Zwalnia poprzednią rezerwację komunikatów. (Przesłonięcia source_block::release_message).
reserve_message Rezerwuje komunikat, który był wcześniej oferowany przez ten join blok obsługi komunikatów. (Przesłonięcia source_block::reserve_message.)
resume_propagation Wznawia propagację po wydaniu rezerwacji. (Przesłonięcia source_block::resume_propagation).)

Uwagi

Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.

Hierarchia dziedziczenia

ISource

ITarget

source_block

propagator_block

join

Wymagania

Nagłówek: agents.h

Przestrzeń nazw: współbieżność

accept_message

Akceptuje komunikat oferowany przez ten join blok obsługi komunikatów, przenosząc własność na obiekt wywołujący.

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

Parametry

_MsgId
Obiekt runtime_object_identity oferowany message .

Wartość zwracana

Wskaźnik do message obiektu, którego obiekt wywołujący ma teraz własność.

consume_message

Używa komunikatu oferowanego wcześniej przez join blok obsługi komunikatów i zarezerwowany przez obiekt docelowy, przenosząc własność do obiektu wywołującego.

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

Parametry

_MsgId
Obiekt runtime_object_identity , który message jest używany.

Wartość zwracana

Wskaźnik do message obiektu, którego obiekt wywołujący ma teraz własność.

Uwagi

Podobnie jak acceptelement , ale zawsze jest poprzedzony wywołaniem metody reserve.

join

join Tworzy blok obsługi komunikatów.

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
Liczba danych wejściowych, które będą dozwolone w tym join bloku.

_Filtr
Funkcja filter, która określa, czy oferowane komunikaty powinny być akceptowane.

_PScheduler
Obiekt Scheduler , w którym zaplanowano zadanie join propagacji bloku obsługi komunikatów.

_PScheduleGroup
Obiekt ScheduleGroup , w którym zaplanowano zadanie join propagacji bloku obsługi komunikatów. Używany Scheduler obiekt jest dorozumiany przez grupę harmonogramu.

Uwagi

Jeśli nie określisz parametrów lub_PScheduleGroup, środowisko uruchomieniowe używa domyślnego _PScheduler harmonogramu.

Typ filter_method to functor z podpisem bool (T const &) , który jest wywoływany przez ten join blok obsługi komunikatów w celu określenia, czy powinien zaakceptować oferowany komunikat.

~dołączyć

join Niszczy blok.

~join();

Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym join blokiem obsługi komunikatów.

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

propagate_message

Asynchronicznie przekazuje komunikat z ISource bloku do tego join bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy.

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

Parametry

_PMessage
Wskaźnik do message obiektu.

_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.

Wartość zwracana

Message_status wskazanie, co cel postanowił zrobić z komunikatem.

propagate_to_any_targets

Tworzy komunikat wyjściowy zawierający komunikat wejściowy z każdego źródła, gdy wszystkie zostały rozpropagowane komunikat. Wysyła ten komunikat wyjściowy do każdego z jego obiektów docelowych.

void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);

release_message

Zwalnia poprzednią rezerwację komunikatów.

virtual void release_message(runtime_object_identity _MsgId);

Parametry

_MsgId
message Obiektruntime_object_identity, który jest zwalniany.

reserve_message

Rezerwuje komunikat, który był wcześniej oferowany przez ten join blok obsługi komunikatów.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametry

_MsgId
Obiekt runtime_object_identity oferowany message .

Wartość zwracana

true jeśli wiadomość została pomyślnie zarezerwowana, false w przeciwnym razie.

Uwagi

Po reserve wywołaniu metody , jeśli zwraca truewartość , consume albo release musi zostać wywołana, aby przejąć lub zwolnić własność komunikatu.

resume_propagation

Wznawia propagację po wydaniu rezerwacji.

virtual void resume_propagation();

Zobacz też

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