Udostępnij za pośrednictwem


Klasa unbounded_buffer

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

_Typu
Typ ładunku komunikatów przechowywanych i propagowanych przez bufor.

Członkowie

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

Isource

Itarget

source_block

propagator_block

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

_Element
Element do dodania.

Wartość zwracana

true jeśli element został zaakceptowany, false w przeciwnym razie.

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_identitymessage , 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