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

ISource

ITarget

source_block

propagator_block

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.

_Filter
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.

~Bergabung

Menghancurkan blok.join

~join();

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();

Baca juga

Namespace layanan konkurensi
kelas pilihan
Kelas multitype_join