Aracılığıyla paylaş


multitype_join Sınıfı

multitype_join Mesajlaşma bloğu, her kaynaktan farklı türlerdeki iletileri bir araya getiren ve hedeflerine birleştirilmiş iletilerin bir demetini sunan çok kaynaklı, tek hedefli bir mesajlaşma bloğudur.

Sözdizimi

template<
    typename T,
    join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;

Parametreler

T
Blok tuple tarafından birleştirilen ve yayılan iletilerin yük türü.

_Jtype
Bunun greedy türü join veyanon_greedy

Üyeler

Genel Tür Tanımları

Ad Tanım
type için Tbir tür diğer adı.

Ortak Oluşturucular

Ad Tanım
multitype_join Aşırı yüklendi. Bir multitype_join mesajlaşma bloğu oluşturur.
~multitype_join Yıkıcı Mesajlaşma bloğunu multitype_join yok eder.

Genel Yöntemler

Ad Tanım
Kabul Bu multitype_join blok tarafından sunulan bir iletiyi kabul eder ve sahipliğini arayana aktarır.
acquire_ref Silme işlemini önlemek için bu multitype_join mesajlaşma bloğunda bir başvuru sayısı alır.
Tüket -mek Daha önce mesajlaşma bloğu tarafından multitype_join sunulan ve hedef tarafından başarıyla ayrılmış bir iletiyi kullanır ve sahipliği arayana aktarır.
link_target Bir hedef bloğu bu multitype_join mesajlaşma bloğuna bağlar.
Sürüm Önceki başarılı bir ileti ayırmayı yayınlar.
release_ref Bu multiple_join mesajlaşma bloğunda bir başvuru sayısı yayınlar.
Rezerv Daha önce bu multitype_join mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.
unlink_target Bir hedef bloğun bu multitype_join mesajlaşma bloğuyla bağlantısını kaldırır.
unlink_targets Bu multitype_join mesajlaşma bloğundaki tüm hedeflerin bağlantısını kaldırır. (Geçersiz Kılmalar ISource::unlink_targets.)

Açıklamalar

Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.

Devralma Hiyerarşisi

Isource

multitype_join

Gereksinimler

Üst bilgi: agents.h

Ad alanı: eşzamanlılık

kabul et

Bu multitype_join blok tarafından sunulan bir iletiyi kabul eder ve sahipliğini arayana aktarır.

virtual message<_Destination_type>* accept(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_MsgId
runtime_object_identity Sunulan message nesnenin öğesi.

_PTarget
yöntemini çağıran hedef bloğun işaretçisi accept .

İade Değeri

Çağıranın artık sahip olduğu iletinin işaretçisi.

acquire_ref

Silme işlemini önlemek için bu multitype_join mesajlaşma bloğunda bir başvuru sayısı alır.

virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_PTarget
Bu yöntemi çağıran hedef bloğun işaretçisi.

Açıklamalar

Bu yöntem, yöntemi sırasında bu kaynağa bağlı olan bir ITarget nesne tarafından çağrılır link_target .

consume

Daha önce mesajlaşma bloğu tarafından multitype_join sunulan ve hedef tarafından başarıyla ayrılmış bir iletiyi kullanır ve sahipliği arayana aktarır.

virtual message<_Destination_type>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_MsgId
runtime_object_identity Ayrılmış message nesnenin öğesi.

_PTarget
yöntemini çağıran hedef bloğun işaretçisi consume .

İade Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

Açıklamalar

consume yöntemi ile acceptbenzerdir, ancak her zaman döndürülen trueöğesine reserve yapılan bir çağrıdan önce olmalıdır.

Bir hedef bloğu bu multitype_join mesajlaşma bloğuna bağlar.

virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_PTarget
Bu multitype_join mesajlaşma bloğuna bağlanmak için bir ITarget bloğun işaretçisi.

multitype_join

Bir multitype_join mesajlaşma bloğu oluşturur.

explicit multitype_join(
    T _Tuple);

multitype_join(
    Scheduler& _PScheduler,
    T _Tuple);

multitype_join(
    ScheduleGroup& _PScheduleGroup,
    T _Tuple);

multitype_join(
    multitype_join&& _Join);

Parametreler

_Tuple
tuple Bu multitype_join mesajlaşma bloğu için kaynaklardan biri.

_PScheduler
Scheduler İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

_Katılın
Kopyalanacak multitype_join bir mesajlaşma bloğu. Özgün nesnenin yalnız bırakılmış olduğunu ve bunu bir taşıma oluşturucu haline getirdiğini unutmayın.

Açıklamalar

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

Taşıma yapısı bir kilit altında yapılmaz, yani taşıma sırasında uçuşta hafif görevler olmadığından emin olmak kullanıcıya aittir. Aksi takdirde, çok sayıda yarış meydana gelebilir ve bu da özel durumlara veya tutarsız duruma neden olabilir.

~multitype_join

Mesajlaşma bloğunu multitype_join yok eder.

~multitype_join();

Sürüm

Önceki başarılı bir ileti ayırmayı yayınlar.

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_MsgId
Serbest runtime_object_identity bırakılan nesnenin message .

_PTarget
yöntemini çağıran hedef bloğun işaretçisi release .

release_ref

Bu multiple_join mesajlaşma bloğunda bir başvuru sayısı yayınlar.

virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_PTarget
Bu yöntemi çağıran hedef bloğun işaretçisi.

Açıklamalar

Bu yöntem, bu kaynaktan bağlantısı kaldırılan bir ITarget nesne tarafından çağrılır. Kaynak bloğunun hedef blok için ayrılmış tüm kaynakları serbest bırakmasına izin verilir.

Rezerv

Daha önce bu multitype_join mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_MsgId
runtime_object_identity Ayrılan nesnenin message öğesi.

_PTarget
yöntemini çağıran hedef bloğun işaretçisi reserve .

İade Değeri

true ileti başarıyla ayrılmışsa, false aksi takdirde. Rezervasyonlar, ileti zaten ayrılmış veya başka bir hedef tarafından kabul edilmiş, kaynak rezervasyonları reddedebilir vb. gibi birçok nedenden dolayı başarısız olabilir.

Açıklamalar

çağrısı reserveyaptıktan sonra, başarılı olursa, sırasıyla iletiyi almak veya release ele geçirmemek için ya da consume aramanız gerekir.

Bir hedef bloğun bu multitype_join mesajlaşma bloğuyla bağlantısını kaldırır.

virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);

Parametreler

_PTarget
Bu multitype_join mesajlaşma bloğunun bağlantısını kaldırmak için bir ITarget bloğun işaretçisi.

Bu multitype_join mesajlaşma bloğundaki tüm hedeflerin bağlantısını kaldırır.

virtual void unlink_targets();

Ayrıca bkz.

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