Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Mesajlaşma join bloğu, tek hedefli, çok kaynaklı, her bir kaynaktan gelen türde propagator_block iletileri bir araya getiren sıralı T 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 join türü greedy veyanon_greedy
Üyeler
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| join | Aşırı yüklü Bir join mesajlaşma bloğu oluşturur. |
| ~join Yıkıcı |
join bloğunu yok eder. |
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 join 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 join mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama. |
| propagate_message |
ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu join mesajlaşma bloğuna geçirir.
propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır. |
| herhangi_bir_hedefe_yay | Her kaynakta bir ileti yayıldığında, her bir kaynaktan gelen giriş iletilerini içeren bir çıkış iletisi oluşturur. Bu çıkış iletisini hedeflerinin her birine gönderir. |
| yayın_mesajı | Önceki mesaj rezervasyonunu kaldırır. (Geçersiz kılmalar source_block::release_message.) |
| rezerv_mesajı | Daha önce bu join 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.) |
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
kabul_mesaji
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
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 join 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<_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 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.
katıl
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 nesnesi, join ileti bloğu için yayma görevinin zamanlandığı yerdir.
_PScheduleGroup
ScheduleGroup nesnesi, join 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 (T const &) olan bir functor olup, bu join mesajlaşma bloğu tarafından sunulan bir mesajı kabul edip etmemesi gerektiğini belirlemek için çağrılır.
~birleştirme
join bloğunu yok eder.
~join();
bağlantı_hedef_bildirimi
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
ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu join mesajlaşma bloğuna geçirir.
propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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 verdiğine dair bir message_status göstergesi.
herhangi_bir_hedefe_yaymak
Her kaynakta bir ileti yayıldığında, her bir kaynaktan gelen giriş iletilerini içeren bir çıkış iletisi oluşturur. Bu çıkış iletisini hedeflerinin her birine gönderir.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
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 join mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametreler
_MsgId
Sunulan message nesnesinin runtime_object_identity.
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();