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 T bir 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
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 accept
benzerdir, ancak her zaman döndürülen true
öğesine reserve
yapılan bir çağrıdan önce olmalıdır.
link_target
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ı reserve
yaptıktan sonra, başarılı olursa, sırasıyla iletiyi almak veya release
ele geçirmemek için ya da consume
aramanız gerekir.
unlink_target
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.
unlink_targets
Bu multitype_join
mesajlaşma bloğundaki tüm hedeflerin bağlantısını kaldırır.
virtual void unlink_targets();
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin