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
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 accept
element , 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();
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.
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 true
wartość , 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