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
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_buffer
kaldı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.
link_target_notification
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_buffer
iletinin ö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üyorsatrue
consume
, 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ı