Kelas multitype_join
multitype_join
Blok olahpesan adalah blok olahpesan multi-sumber dan target tunggal yang menggabungkan bersama-sama pesan dari berbagai jenis dari masing-masing sumbernya dan menawarkan tuple pesan gabungan ke targetnya.
Sintaks
template<
typename T,
join_type _Jtype = non_greedy
>
class multitype_join: public ISource<typename _Unwrap<T>::type>;
Parameter
T
Jenis tuple
payload pesan yang digabungkan dan disebarluaskan oleh blok.
_Jtype
Jenis join
blok ini, baik greedy
atau non_greedy
Anggota
Typedef Publik
Nama | Deskripsi |
---|---|
type |
Alias jenis untuk T . |
Konstruktor Publik
Nama | Deskripsi |
---|---|
multitype_join | Kelebihan beban. Membuat multitype_join blok olahpesan. |
~multitype_join Destructor | multitype_join Menghancurkan blok olahpesan. |
Metode Publik
Nama | Deskripsi |
---|---|
Menerima | Menerima pesan yang ditawarkan oleh blok ini multitype_join , mentransfer kepemilikan ke pemanggil. |
acquire_ref | Memperoleh jumlah referensi pada blok olahpesan ini multitype_join , untuk mencegah penghapusan. |
Mengkonsumsi | Mengonsumsi pesan yang sebelumnya ditawarkan oleh multitype_join blok olahpesan dan berhasil dicadangkan oleh target, mentransfer kepemilikan ke pemanggil. |
link_target | Menautkan blok target ke blok olahpesan ini multitype_join . |
Rilis | Merilis reservasi pesan yang berhasil sebelumnya. |
release_ref | Merilis jumlah referensi pada blok olahpesan ini multiple_join . |
Reserve | Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini multitype_join . |
unlink_target | Batalkan tautan blok target dari blok olahpesan ini multitype_join . |
unlink_targets | Batalkan tautan semua target dari blok olahpesan ini multitype_join . (Penimpaan ISource::unlink_targets.) |
Keterangan
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
multitype_join
Persyaratan
Header: agents.h
Namespace: konkurensi
Menerima
Menerima pesan yang ditawarkan oleh blok ini multitype_join
, mentransfer kepemilikan ke pemanggil.
virtual message<_Destination_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_MsgId
Dari runtime_object_identity
objek yang ditawarkan message
.
_PTarget
Penunjuk ke blok target yang memanggil accept
metode .
Tampilkan Nilai
Penunjuk ke pesan yang sekarang dimiliki pemanggil.
acquire_ref
Memperoleh jumlah referensi pada blok olahpesan ini multitype_join
, untuk mencegah penghapusan.
virtual void acquire_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Penunjuk ke blok target yang memanggil metode ini.
Keterangan
Metode ini dipanggil oleh ITarget
objek yang sedang ditautkan ke sumber ini selama link_target
metode .
mengkonsumsi
Mengonsumsi pesan yang sebelumnya ditawarkan oleh multitype_join
blok olahpesan dan berhasil dicadangkan oleh target, mentransfer kepemilikan ke pemanggil.
virtual message<_Destination_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_MsgId
Objek runtime_object_identity
yang dipesan message
.
_PTarget
Penunjuk ke blok target yang memanggil consume
metode .
Tampilkan Nilai
Penunjuk ke message
objek yang sekarang dimiliki pemanggil.
Keterangan
Metode consume
ini mirip accept
dengan , tetapi harus selalu didahului oleh panggilan ke reserve
yang dikembalikan true
.
link_target
Menautkan blok target ke blok olahpesan ini multitype_join
.
virtual void link_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Penunjuk ke ITarget
blok untuk menautkan ke blok olahpesan ini multitype_join
.
multitype_join
Membuat multitype_join
blok olahpesan.
explicit multitype_join(
T _Tuple);
multitype_join(
Scheduler& _PScheduler,
T _Tuple);
multitype_join(
ScheduleGroup& _PScheduleGroup,
T _Tuple);
multitype_join(
multitype_join&& _Join);
Parameter
_Tuple
Sumber tuple
untuk blok olahpesan ini multitype_join
.
_PScheduler
Objek Scheduler
tempat tugas penyebaran untuk multitype_join
blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup
tempat tugas penyebaran untuk multitype_join
blok olahpesan dijadwalkan. Objek Scheduler
yang digunakan tersirat oleh grup jadwal.
_Bergabung
multitype_join
Blok olahpesan untuk disalin. Perhatikan bahwa objek asli yatim piatu, menjadikan ini konstruktor pemindahan.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler
parameter atau _PScheduleGroup
.
Konstruksi pemindahan tidak dilakukan di bawah kunci, yang berarti bahwa terserah pengguna untuk memastikan bahwa tidak ada tugas ringan dalam penerbangan pada saat bergerak. Jika tidak, banyak ras dapat terjadi, yang mengarah ke pengecualian atau status yang tidak konsisten.
~multitype_join
multitype_join
Menghancurkan blok olahpesan.
~multitype_join();
rilis
Merilis reservasi pesan yang berhasil sebelumnya.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_MsgId
Objek runtime_object_identity
yang message
dilepaskan.
_PTarget
Penunjuk ke blok target yang memanggil release
metode .
release_ref
Merilis jumlah referensi pada blok olahpesan ini multiple_join
.
virtual void release_ref(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Penunjuk ke blok target yang memanggil metode ini.
Keterangan
Metode ini dipanggil oleh ITarget
objek yang sedang dilepas tautannya dari sumber ini. Blok sumber diizinkan untuk merilis sumber daya apa pun yang dicadangkan untuk blok target.
Reserve
Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini multitype_join
.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_MsgId
Objek runtime_object_identity
yang message
sedang dicadangkan.
_PTarget
Penunjuk ke blok target yang memanggil reserve
metode .
Tampilkan Nilai
true
jika pesan berhasil dicadangkan, false
jika tidak. Reservasi dapat gagal karena banyak alasan, termasuk: pesan sudah dicadangkan atau diterima oleh target lain, sumber dapat menolak reservasi, dan sebagainya.
Keterangan
Setelah Anda memanggil reserve
, jika berhasil, Anda harus memanggil baik consume
atau release
untuk mengambil atau menyerah kepemilikan pesan, masing-masing.
unlink_target
Batalkan tautan blok target dari blok olahpesan ini multitype_join
.
virtual void unlink_target(_Inout_ ITarget<_Destination_type>* _PTarget);
Parameter
_PTarget
Penunjuk ke ITarget
blok untuk membatalkan tautan dari blok olahpesan ini multitype_join
.
unlink_targets
Batalkan tautan semua target dari blok olahpesan ini multitype_join
.
virtual void unlink_targets();
Baca juga
Namespace layanan konkurensi
kelas pilihan
bergabung dengan Kelas
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk