bergabung dengan Kelas
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 accept
dengan , 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