join Sınıfı
Mesajlaşma join
bloğu, tek hedefli, çok kaynaklı, her bir kaynaktan gelen türde T
iletileri bir araya getiren sıralı propagator_block
bir bloktır.
Sözdizimi
template<class T,
join_type _Jtype = non_greedy>
class join : public propagator_block<single_link_registry<ITarget<std::vector<T>>>,
multi_link_registry<ISource<T>>>;
Parametreler
T
Blok tarafından birleştirilen ve yayılan iletilerin yük türü.
_Jtype
Bunun greedy
türü join
veyanon_greedy
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
join | Aşırı yüklendi. Bir join mesajlaşma bloğu oluşturur. |
~join Yıkıcı | Bloğu yok eder join . |
Korumalı Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
accept_message | Bu join 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 join sunulan ve hedef tarafından ayrılmış olan bir iletiyi kullanır ve sahipliğini arayana aktarır. |
link_target_notification | Bu join mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama. |
propagate_message | Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu join 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_to_any_targets | Tümü bir ileti yayıldığında her kaynaktan bir giriş iletisi içeren bir çıkış iletisi oluşturur. Bu çıkış iletisini hedeflerinin her birine gönderir. |
release_message | Önceki ileti rezervasyonlarını yayınlar. (Geçersiz kılmalar source_block::release_message.) |
reserve_message | Daha önce bu join 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.) |
Açıklamalar
Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.
Devralma Hiyerarşisi
join
Gereksinimler
Üst bilgi: agents.h
Ad alanı: eşzamanlılık
accept_message
Bu join
mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.
virtual message<_OutputType>* 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 join
sunulan ve hedef tarafından ayrılmış olan bir iletiyi kullanır ve sahipliğini arayana aktarır.
virtual message<_OutputType>* 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.
join
Bir join
mesajlaşma bloğu oluşturur.
join(
size_t _NumInputs);
join(
size_t _NumInputs,
filter_method const& _Filter);
join(
Scheduler& _PScheduler,
size_t _NumInputs);
join(
Scheduler& _PScheduler,
size_t _NumInputs,
filter_method const& _Filter);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs);
join(
ScheduleGroup& _PScheduleGroup,
size_t _NumInputs,
filter_method const& _Filter);
Parametreler
_NumInputs
Bu join
bloğun giriş sayısına izin verilir.
_Filtre
Sunulan iletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.
_PScheduler
Scheduler
İleti bloğu için yayma görevinin join
zamanlandığı nesne.
_PScheduleGroup
ScheduleGroup
İleti bloğu için yayma görevinin join
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 join
mesajlaşma bloğu tarafından çağrılan imzalı bool (T const &)
bir functor'dır.
~birleştirmek
Bloğu yok eder join
.
~join();
link_target_notification
Bu join
mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propagate_message
Bir bloktan ISource
gelen iletiyi zaman uyumsuz olarak bu join
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.
message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _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_to_any_targets
Tümü bir ileti yayıldığında her kaynaktan bir giriş iletisi içeren bir çıkış iletisi oluşturur. Bu çıkış iletisini hedeflerinin her birine gönderir.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
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 join
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
Sunulan message
nesnenin öğ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();