Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Blok unbounded_buffer obsługi komunikatów to wielokierunkowy, wieloźródłowy, uporządkowany propagator_block w stanie przechowywać niezwiązaną liczbę komunikatów.
Składnia
template<
class _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget< _Type>>, multi_link_registry<ISource< _Type>>>;
Parametry
_Typ
Typ ładunku komunikatów przechowywanych i propagowanych przez bufor.
Elementy członkowskie
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
| unbounded_buffer | Przeciążone. unbounded_buffer Tworzy blok obsługi komunikatów. |
| ~unbounded_buffer Destruktor | Niszczy blok obsługi komunikatów unbounded_buffer . |
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
| dequeue | Usuwa element z bloku obsługi komunikatów unbounded_buffer . |
| enqueue | Dodaje element do bloku obsługi komunikatów unbounded_buffer . |
Metody chronione
| Nazwa/nazwisko | opis |
|---|---|
| accept_message | Akceptuje komunikat oferowany przez ten unbounded_buffer blok obsługi komunikatów, przenosząc własność na obiekt wywołujący. |
| consume_message | Używa komunikatu oferowanego wcześniej przez unbounded_buffer 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 unbounded_buffer blokiem obsługi komunikatów. |
| process_input_messages | Umieszcza element message _PMessage w tym unbounded_buffer bloku obsługi komunikatów i próbuje zaoferować go wszystkim połączonym obiektom docelowym. |
| propagate_message | Asynchronicznie przekazuje komunikat z ISource bloku do tego unbounded_buffer bloku obsługi komunikatów. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy. |
| propagate_output_messages | Umieszcza element message _PMessage w tym unbounded_buffer bloku obsługi komunikatów i próbuje zaoferować go wszystkim połączonym obiektom docelowym. (Przesłonięcia source_block::p ropagate_output_messages). |
| 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 unbounded_buffer 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 unbounded_buffer bloku obsługi komunikatów. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy. |
| supports_anonymous_source | Zastępuje metodę supports_anonymous_source , aby wskazać, że ten blok może akceptować komunikaty oferowane przez źródło, które nie jest połączone. (Przesłonięcia) ITarget::supports_anonymous_source.) |
Aby uzyskać więcej informacji, zobacz Asynchroniczne bloki komunikatów.
Hierarchia dziedziczenia
unbounded_buffer
Wymagania
Nagłówek: agents.h
Przestrzeń nazw: współbieżność
accept_message
Akceptuje komunikat oferowany przez ten unbounded_buffer blok obsługi komunikatów, przenosząc własność na obiekt wywołujący.
virtual message<_Type> * 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 unbounded_buffer blok obsługi komunikatów i zarezerwowany przez obiekt docelowy, przenosząc własność do obiektu wywołującego.
virtual message<_Type> * 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.
dequeue
Usuwa element z bloku obsługi komunikatów unbounded_buffer .
_Type dequeue();
Wartość zwracana
Ładunek komunikatu usuniętego z elementu unbounded_buffer.
enqueue
Dodaje element do bloku obsługi komunikatów unbounded_buffer .
bool enqueue(
_Type const& _Item
);
Parametry
_Przedmiot
Element do dodania.
Wartość zwracana
true jeśli element został zaakceptowany, false w przeciwnym razie.
link_target_notification
Wywołanie zwrotne, które powiadamia o tym, że nowy element docelowy został połączony z tym unbounded_buffer blokiem obsługi komunikatów.
virtual void link_target_notification(
_Inout_ ITarget<_Type> * _PTarget
);
Parametry
_PTarget
Wskaźnik do nowo połączonego elementu docelowego.
propagate_message
Asynchronicznie przekazuje komunikat z ISource bloku do tego unbounded_buffer 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<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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_output_messages
Umieszcza element message _PMessage w tym unbounded_buffer bloku obsługi komunikatów i próbuje zaoferować go wszystkim połączonym obiektom docelowym.
virtual void propagate_output_messages();
Uwagi
Jeśli inny komunikat jest już przed tym w elemecie unbounded_buffer, propagacja do połączonych obiektów docelowych nie nastąpi, dopóki żadne wcześniejsze komunikaty nie zostaną zaakceptowane lub zużyte. Pierwszy połączony element docelowy pomyślnie accept lub consume komunikat przejmuje własność, a żaden inny element docelowy nie może następnie pobrać komunikatu.
process_input_messages
Umieszcza element message _PMessage w tym unbounded_buffer bloku obsługi komunikatów i próbuje zaoferować go wszystkim połączonym obiektom docelowym.
virtual void process_input_messages(
_Inout_ message<_Type> * _PMessage
);
Parametry
_PMessage
Wskaźnik do komunikatu, który ma zostać przetworzony.
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 unbounded_buffer 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 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();
send_message
Synchronicznie przekazuje komunikat z ISource bloku do tego unbounded_buffer 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<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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.
supports_anonymous_source
Zastępuje metodę supports_anonymous_source , aby wskazać, że ten blok może akceptować komunikaty oferowane przez źródło, które nie jest połączone.
virtual bool supports_anonymous_source();
Wartość zwracana
true ponieważ blok nie odłoży oferowanych wiadomości.
unbounded_buffer
unbounded_buffer Tworzy blok obsługi komunikatów.
unbounded_buffer();
unbounded_buffer(
filter_method const& _Filter
);
unbounded_buffer(
Scheduler& _PScheduler
);
unbounded_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter
);
unbounded_buffer(
ScheduleGroup& _PScheduleGroup
);
unbounded_buffer(
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 unbounded_buffer propagacji bloku obsługi komunikatów.
_PScheduleGroup
Obiekt ScheduleGroup , w którym zaplanowano zadanie unbounded_buffer 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 (_Type const &) , który jest wywoływany przez ten unbounded_buffer blok obsługi komunikatów w celu określenia, czy powinien zaakceptować oferowany komunikat.
~unbounded_buffer
Niszczy blok obsługi komunikatów unbounded_buffer .
~unbounded_buffer();
Zobacz też
Przestrzeń nazw współbieżności
overwrite_buffer, klasa
single_assignment, klasa