unbounded_buffer Sınıfı

Mesajlaşma unbounded_buffer bloğu, çok hedefli, çok kaynaklı, sıralı propagator_block , ilişkisiz sayıda ileti depolayabilen bir blok.

Sözdizimi

template<
   class             _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget<            _Type>>, multi_link_registry<ISource<            _Type>>>;

Parametreler

_Tür
Arabellek tarafından depolanan ve yayılan iletilerin yük türü.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
unbounded_buffer Aşırı yüklendi. Bir unbounded_buffer mesajlaşma bloğu oluşturur.
~unbounded_buffer Yıkıcı Mesajlaşma bloğunu unbounded_buffer yok eder.

Genel Yöntemler

Veri Akışı Adı Açıklama
Dequeue Bir öğeyi unbounded_buffer mesajlaşma bloğundan kaldırır.
Enqueue Mesajlaşma bloğuna unbounded_buffer bir öğe ekler.

Korumalı Yöntemler

Veri Akışı Adı Açıklama
accept_message Bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.
consume_message Daha önce mesajlaşma bloğu tarafından unbounded_buffer sunulan ve hedef tarafından ayrılmış olan bir iletiyi kullanır ve sahipliğini arayana aktarır.
link_target_notification Bu unbounded_buffer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
process_input_messages message _PMessage öğesini bu unbounded_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunmaya çalışır.
propagate_message Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate çağrılır.
propagate_output_messages message _PMessage öğesini bu unbounded_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunmaya çalışır. (source_block::p ropagate_output_messages geçersiz kılar.)
release_message Önceki ileti rezervasyonlarını yayınlar. (Geçersiz kılmalar source_block::release_message.)
reserve_message Daha önce bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır. (Geçersiz kılmalar source_block::reserve_message.)
resume_propagation Rezervasyon yayımlandıktan sonra yayılmaya devam eder. (Geçersiz kılmalar source_block::resume_propagation.)
send_message Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu unbounded_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send çağrılır.
supports_anonymous_source Bu bloğun supports_anonymous_source bağlı olmayan bir kaynak tarafından sunulan iletileri kabul ettiğini belirtmek için yöntemini geçersiz kılar. (Geçersiz Kılmalar ITarget::supports_anonymous_source.)

Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.

Devralma Hiyerarşisi

ISource

ITarget

source_block

propagator_block

unbounded_buffer

Gereksinimler

Üst bilgi: agents.h

Ad alanı: eşzamanlılık

accept_message

Bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.

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

Parametreler

_MsgId
runtime_object_identity Sunulan message nesnenin öğesi.

Dönüş Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

consume_message

Daha önce mesajlaşma bloğu tarafından unbounded_buffer sunulan ve hedef tarafından ayrılmış olan bir iletiyi kullanır ve sahipliğini arayana aktarır.

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

Parametreler

_MsgId
runtime_object_identity Tüketilen nesnenin message sayısı.

Dönüş Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

Açıklamalar

benzeridir accept, ancak her zaman için bir çağrısının reserveönündedir.

Dequeue

Bir öğeyi unbounded_buffer mesajlaşma bloğundan kaldırır.

_Type dequeue();

Dönüş Değeri

İletinin yükü öğesinden unbounded_bufferkaldırıldı.

Enqueue

Mesajlaşma bloğuna unbounded_buffer bir öğe ekler.

bool enqueue(
   _Type const&                 _Item
);

Parametreler

_Madde
Eklenecek öğe.

Dönüş Değeri

true öğe kabul edildiyse, false aksi takdirde.

Bu unbounded_buffer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.

virtual void link_target_notification(
   _Inout_ ITarget<_Type> *                 _PTarget
);

Parametreler

_PTarget
Yeni bağlanan hedefe işaret eden bir işaretçi.

propagate_message

Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate çağrılır.

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

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

Dönüş Değeri

Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.

propagate_output_messages

message _PMessage öğesini bu unbounded_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunmaya çalışır.

virtual void propagate_output_messages();

Açıklamalar

içinde bu unbounded_bufferiletinin önünde başka bir ileti varsa, önceki iletiler kabul edilene veya tüketilene kadar bağlı hedeflere yayma gerçekleşmez. başarılı bir şekilde accept ilk bağlantılı hedef veya consume ileti sahipliği alır ve başka hiçbir hedef iletiyi alamaz.

process_input_messages

message _PMessage öğesini bu unbounded_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunmaya çalışır.

virtual void process_input_messages(
   _Inout_ message<_Type> *                 _PMessage
);

Parametreler

_PMessage
İşlenecek iletinin işaretçisi.

release_message

Önceki ileti rezervasyonlarını yayınlar.

virtual void release_message(
   runtime_object_identity                 _MsgId
);

Parametreler

_MsgId
Serbest runtime_object_identity bırakılan nesnenin message .

reserve_message

Daha önce bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.

virtual bool reserve_message(
   runtime_object_identity                 _MsgId
);

Parametreler

_MsgId
runtime_object_identity Ayrılan nesnenin message öğesi.

Dönüş Değeri

true ileti başarıyla ayrılmışsa, false aksi takdirde.

Açıklamalar

çağrıldıktan sonrareserve, döndürüyorsatrueconsume, iletinin sahipliğini almak veya release yayınlamak için çağrılmalıdır.

resume_propagation

Rezervasyon yayımlandıktan sonra yayılmaya devam eder.

virtual void resume_propagation();

send_message

Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu unbounded_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send çağrılır.

virtual message_status send_message(
   _Inout_ message<_Type> *                 _PMessage,
   _Inout_ ISource<_Type> *                 _PSource
);

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

Dönüş Değeri

Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.

supports_anonymous_source

Bu bloğun supports_anonymous_source bağlı olmayan bir kaynak tarafından sunulan iletileri kabul ettiğini belirtmek için yöntemini geçersiz kılar.

virtual bool supports_anonymous_source();

Dönüş Değeri

true çünkü blok, sunulan iletileri ertelemez.

unbounded_buffer

Bir unbounded_buffer mesajlaşma bloğu oluşturur.

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
);

Parametreler

_Filtre
Sunulan iletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.

_PScheduler
Scheduler İleti bloğu için yayma görevinin unbounded_buffer zamanlandığı nesne.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin unbounded_buffer zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

Açıklamalar

veya _PScheduleGroup parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı _PScheduler kullanır.

Türüfilter_method, sunulan bir iletiyi kabul edip etmemesi gerektiğini belirlemek için bu unbounded_buffer mesajlaşma bloğu tarafından çağrılan imzalı bool (_Type const &) bir functor'dır.

~unbounded_buffer

Mesajlaşma bloğunu unbounded_buffer yok eder.

~unbounded_buffer();

Ayrıca bkz.

Eşzamanlılık Ad Alanı
overwrite_buffer Sınıfı
single_assignment Sınıfı