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

ISource

ITarget

source_block

propagator_block

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

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

Ayrıca bkz.

Eşzamanlılık Ad Alanı
choice Sınıfı
multitype_join Sınıfı