Share via


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

ISource

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 acceptdengan , tetapi harus selalu didahului oleh panggilan ke reserve yang dikembalikan true.

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.

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 .

Batalkan tautan semua target dari blok olahpesan ini multitype_join .

virtual void unlink_targets();

Baca juga

Namespace layanan konkurensi
kelas pilihan
bergabung dengan Kelas