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üklü 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
Kuyruktan Çek Bir öğeyi unbounded_buffer mesajlaşma bloğundan kaldırır.
Kuyruğa ekle 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 unbounded_buffer mesajlaşma bloğu tarafından sunulmuş ve hedef tarafından ayrılmış olan bir iletiyi tüketir ve sahipliğini arayana devreder.
link_hedef_bildirim 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 ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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::propagate_output_messages işlevini geçersiz kılar.)
yayın_mesajı Önceki mesaj rezervasyonunu kaldırır. (Geçersiz kılmalar source_block::release_message.)
rezerv_mesajı Daha önce bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır. (Geçersiz kılar source_block::reserve_message.)
resume_propagation Rezervasyon serbest bırakıldıktan sonra yayılım yeniden başlar. (Geçersiz kılmalar source_block::resume_propagation.)
send_message Bir bloktan iletiyi senkronize olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. send yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır.
supports_anonymous_source Bağlı olmayan bir kaynak tarafından sunulan iletileri kabul edebileceğini belirtmek için supports_anonymous_source 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

kabul_mesaji

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
Sunulan message nesnesinin runtime_object_identity.

Dönüş Değeri

Çağıranın artık sahip olduğu message nesnesine ait bir işaretçi.

mesaj tüket

Daha önce unbounded_buffer mesajlaşma bloğu tarafından sunulmuş ve hedef tarafından ayrılmış olan bir iletiyi tüketir ve sahipliğini arayana devreder.

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 artık sahip olduğu message nesnesine ait bir işaretçi.

Açıklamalar

Bu, accept'ye benzer, ancak her zaman reserve çağrısından önce gelir.

kuyruktan çıkar

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

_Type dequeue();

Dönüş Değeri

İletinin yükü unbounded_buffer'den çıkarıldı.

kuyruğa alma

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ğlantı yapılan hedefe işaret eden bir işaretçi.

propagate_message

ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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 verdiğine dair bir message_status göstergesi.

çıkış_mesajlarını_yaymak

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

unbounded_buffer önünde bu iletinin başka bir ileti varsa, önceki iletiler kabul edilip tüketilene dek bağlantılı hedeflere geçiş gerçekleşmez. İlk bağlantılı hedef, başarılı bir şekilde accept veya consume iletiyi sahiplenir ve başka hiçbir hedef iletiyi daha sonra alamaz.

girdi_mesajlarını_işle

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 mesaja ait gösterici.

sürüm_mesajı

Önceki mesaj rezervasyonunu kaldırır.

virtual void release_message(
   runtime_object_identity                 _MsgId
);

Parametreler

_MsgId
Bırakılan message nesnesinin runtime_object_identity serbest.

rezerve_mesajı

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 rezerve edildiyse, false aksi takdirde.

Açıklamalar

reserve çağrıldıktan sonra, eğer true döndürülürse, iletinin sahipliğini almak veya release iletmek için ya consume ya da release çağrılmalıdır.

resume_propagation

Rezervasyon serbest bırakıldıktan sonra yayılım yeniden başlar.

virtual void resume_propagation();

mesaj_gönder

Bir bloktan iletiyi senkronize olarak bu unbounded_buffer mesajlaşma bloğuna geçirir. send yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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 verdiğine dair bir message_status göstergesi.

anonim_kaynağı_destekler

Bağlı olmayan bir kaynak tarafından sunulan iletileri kabul edebileceğini belirtmek için supports_anonymous_source 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 nesnesi, unbounded_buffer ileti bloğu için yayma görevinin zamanlandığı yerdir.

_PScheduleGroup
ScheduleGroup nesnesi, unbounded_buffer ileti bloğu için yayma görevinin zamanlandığı yerdir. Scheduler kullanılan nesne zamanlama grubuyla belirtilir.

Açıklamalar

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

Tür filter_method, imzalı bool (_Type const &) olan bir functor olup, bu unbounded_buffer mesajlaşma bloğu tarafından sunulan bir mesajı kabul edip etmemesi gerektiğini belirlemek için çağrılı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ı