Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
join Blok olahpesan adalah target tunggal, multi-sumber, yang diurutkan propagator_block yang menggabungkan bersama-sama pesan jenis T dari masing-masing sumbernya.
Sintaks
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>>>;
Parameter
T
Jenis payload pesan yang digabungkan dan disebarluaskan oleh blok.
_Jtype
Jenis join blok ini, baik greedy atau non_greedy
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| join | Kelebihan beban. Membuat join blok olahpesan. |
| ~join Destructor | Menghancurkan blok.join |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini join , mentransfer kepemilikan ke pemanggil. |
| consume_message | Mengonsumsi pesan yang sebelumnya ditawarkan oleh join blok olahpesan dan dicadangkan oleh target, mentransfer kepemilikan ke pemanggil. |
| link_target_notification | Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini join . |
| propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini join . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber. |
| propagate_to_any_targets | Membuat pesan output yang berisi pesan input dari setiap sumber ketika semuanya menyebarkan pesan. Mengirim pesan output ini ke setiap targetnya. |
| release_message | Merilis reservasi pesan sebelumnya. (Mengambil alih source_block::release_message.) |
| reserve_message | Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini join . (Mengambil alih source_block::reserve_message.) |
| resume_propagation | Melanjutkan penyebaran setelah reservasi dirilis. (Mengambil alih source_block::resume_propagation.) |
Keterangan
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
join
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini join , mentransfer kepemilikan ke pemanggil.
virtual message<_OutputType>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Dari runtime_object_identity objek yang ditawarkan message .
Tampilkan Nilai
Penunjuk ke message objek yang sekarang dimiliki pemanggil.
consume_message
Mengonsumsi pesan yang sebelumnya ditawarkan oleh join blok olahpesan dan dicadangkan oleh target, mentransfer kepemilikan ke pemanggil.
virtual message<_OutputType>* consume_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity yang message dikonsumsi.
Tampilkan Nilai
Penunjuk ke message objek yang sekarang dimiliki pemanggil.
Keterangan
Mirip acceptdengan , tetapi selalu didahului oleh panggilan ke reserve.
join
Membuat join blok olahpesan.
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);
Parameter
_NumInputs
Jumlah input blok ini join akan diizinkan.
_Saringan
Fungsi filter yang menentukan apakah pesan yang ditawarkan harus diterima.
_PScheduler
Objek Scheduler tempat tugas penyebaran untuk join blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup tempat tugas penyebaran untuk join blok olahpesan dijadwalkan. Objek Scheduler yang digunakan tersirat oleh grup jadwal.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler parameter atau _PScheduleGroup .
Jenisnya filter_method adalah funktor dengan tanda tangan bool (T const &) yang dipanggil oleh blok olahpesan ini join untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~ikat
Menghancurkan blok.join
~join();
link_target_notification
Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini join .
virtual void link_target_notification(_Inout_ ITarget<std::vector<T>> *);
propagate_message
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini join . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber.
message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parameter
_PMessage
Penunjuk ke message objek.
_PSource
Penunjuk ke blok sumber yang menawarkan pesan.
Tampilkan Nilai
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
propagate_to_any_targets
Membuat pesan output yang berisi pesan input dari setiap sumber ketika semuanya menyebarkan pesan. Mengirim pesan output ini ke setiap targetnya.
void propagate_to_any_targets(_Inout_opt_ message<_OutputType> *);
release_message
Merilis reservasi pesan sebelumnya.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity yang message dilepaskan.
reserve_message
Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini join .
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Dari runtime_object_identity objek yang ditawarkan message .
Tampilkan Nilai
true jika pesan berhasil dicadangkan, false jika tidak.
Keterangan
Setelah reserve dipanggil, jika mengembalikan true, baik consume atau release harus dipanggil untuk mengambil atau melepaskan kepemilikan pesan.
resume_propagation
Melanjutkan penyebaran setelah reservasi dirilis.
virtual void resume_propagation();
Lihat juga
Namespace layanan konkurensi
kelas pilihan
Kelas multitype_join