Klasa single_assignment
single_assignment
Blok obsługi komunikatów to wielowersyjny, wieloźródłowy, uporządkowany propagator_block
w celu przechowywania pojedynczego, jednokrotnego message
zapisu.
Składnia
template<class T>
class single_assignment : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;
Parametry
T
Typ ładunku komunikatu przechowywanego i propagowanego przez bufor.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
single_assignment | Przeciążone. single_assignment Tworzy blok obsługi komunikatów. |
~single_assignment Destruktor | Niszczy blok obsługi komunikatów single_assignment . |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
has_value | Sprawdza, czy ten single_assignment blok obsługi komunikatów został jeszcze zainicjowany z wartością. |
wartość | Pobiera odwołanie do bieżącego ładunku komunikatu przechowywanego single_assignment w bloku obsługi komunikatów. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
accept_message | Akceptuje komunikat oferowany przez ten single_assignment blok obsługi komunikatów, zwracając kopię wiadomości do obiektu wywołującego. |
consume_message | Używa komunikatu oferowanego wcześniej przez single_assignment obiekt docelowy i zarezerwowanego przez obiekt docelowy, zwracając kopię komunikatu 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 single_assignment blokiem obsługi komunikatów. |
propagate_message | Asynchronicznie przekazuje komunikat z ISource bloku do tego single_assignment bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy. |
propagate_to_any_targets | Umieszcza element message _PMessage w tym single_assignment bloku obsługi komunikatów i udostępnia go wszystkim połączonym obiektom docelowym. |
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 single_assignment 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).) |
send_message | Synchronicznie przekazuje komunikat z ISource bloku do tego single_assignment bloku obsługi komunikatów. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy. |
Uwagi
Blok single_assignment
obsługi komunikatów propaguje kopie komunikatu do każdego obiektu docelowego.
Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.
Hierarchia dziedziczenia
single_assignment
Wymagania
Nagłówek: agents.h
Przestrzeń nazw: współbieżność
accept_message
Akceptuje komunikat oferowany przez ten single_assignment
blok obsługi komunikatów, zwracając kopię wiadomości do obiektu wywołującego.
virtual message<T>* 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ść.
Uwagi
Blok single_assignment
obsługi komunikatów zwraca kopie wiadomości do jej elementów docelowych, zamiast przenosić własność aktualnie przechowywanej wiadomości.
consume_message
Używa komunikatu oferowanego wcześniej przez single_assignment
obiekt docelowy i zarezerwowanego przez obiekt docelowy, zwracając kopię komunikatu do obiektu wywołującego.
virtual message<T>* 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
.
has_value
Sprawdza, czy ten single_assignment
blok obsługi komunikatów został jeszcze zainicjowany z wartością.
bool has_value() const;
Wartość zwracana
true
jeśli blok otrzymał wartość, false
w przeciwnym razie.
link_target_notification
Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym single_assignment
blokiem obsługi komunikatów.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parametry
_PTarget
Wskaźnik do nowo połączonego elementu docelowego.
propagate_message
Asynchronicznie przekazuje komunikat z ISource
bloku do tego single_assignment
bloku obsługi komunikatów. Jest wywoływana przez metodę propagate
, gdy jest wywoływana przez blok źródłowy.
virtual 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
Umieszcza element message
_PMessage
w tym single_assignment
bloku obsługi komunikatów i udostępnia go wszystkim połączonym obiektom docelowym.
virtual void propagate_to_any_targets(_Inout_opt_ message<T>* _PMessage);
Parametry
_PMessage
Wskaźnik do message
tego, że ten single_assignment
blok obsługi komunikatów przejął własność.
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 single_assignment
blok obsługi komunikatów.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametry
_MsgId
Obiekt runtime_object_identity
message
, który jest zarezerwowany.
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();
send_message
Synchronicznie przekazuje komunikat z ISource
bloku do tego single_assignment
bloku obsługi komunikatów. Jest wywoływana przez metodę send
, gdy jest wywoływana przez blok źródłowy.
virtual message_status send_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.
single_assignment
single_assignment
Tworzy blok obsługi komunikatów.
single_assignment();
single_assignment(
filter_method const& _Filter);
single_assignment(
Scheduler& _PScheduler);
single_assignment(
Scheduler& _PScheduler,
filter_method const& _Filter);
single_assignment(
ScheduleGroup& _PScheduleGroup);
single_assignment(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter);
Parametry
_Filtr
Funkcja filter, która określa, czy oferowane komunikaty powinny być akceptowane.
_PScheduler
Obiekt Scheduler
, w którym zaplanowano zadanie single_assignment
propagacji bloku obsługi komunikatów.
_PScheduleGroup
Obiekt ScheduleGroup
, w którym zaplanowano zadanie single_assignment
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 single_assignment
blok obsługi komunikatów w celu określenia, czy powinien zaakceptować oferowany komunikat.
~single_assignment
Niszczy blok obsługi komunikatów single_assignment
.
~single_assignment();
wartość
Pobiera odwołanie do bieżącego ładunku komunikatu przechowywanego single_assignment
w bloku obsługi komunikatów.
T const& value();
Wartość zwracana
Ładunek przechowywanego komunikatu.
Uwagi
Ta metoda będzie czekać na nadejście komunikatu, jeśli w bloku obsługi komunikatów nie jest obecnie przechowywany single_assignment
żaden komunikat.
Zobacz też
Przestrzeń nazw współbieżności
overwrite_buffer, klasa
unbounded_buffer, klasa