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.
single_assignment Blok olahpesan adalah multi-target, multi-sumber, diurutkan propagator_block mampu menyimpan satu, tulis sekali message.
Sintaks
template<class T>
class single_assignment : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;
Parameter
T
Jenis payload pesan yang disimpan dan disebarkan oleh buffer.
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| single_assignment | Kelebihan beban. Membuat single_assignment blok pesan. |
| ~single_assignment Destructor | Menghancurkan blok pesan single_assignment. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| has_value | Memeriksa apakah blok olahpesan single_assignment ini telah diinisialisasi dengan nilai atau belum. |
| value | Mendapatkan referensi ke payload saat ini dari pesan yang disimpan di blok olahpesan single_assignment. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini single_assignment , mengembalikan salinan pesan ke pemanggil. |
| consume_message | Memproses pesan yang sebelumnya ditawarkan oleh single_assignment dan disimpan oleh target, mengembalikan salinan pesan kepada pemanggil. |
| notifikasi_target_tautan | Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini single_assignment. |
| propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini single_assignment . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber. |
| sebarkan_ke_semua_tujuan | Tempatkan message _PMessage di blok olahpesan ini single_assignment dan tawarkan ke semua target yang ditautkan. |
| release_message | Menghapus reservasi pesan yang sebelumnya. (Mengganti source_block::release_message.) |
| reserve_message | Mengamankan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini single_assignment. (Mengganti source_block::reserve_message.) |
| resume_propagation | Melanjutkan proses penyebaran setelah reservasi dilepaskan. (Mengambil alih source_block::resume_propagation.) |
| send_message | Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini single_assignment . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber. |
Keterangan
single_assignment Blok olahpesan menyebarluaskan salinan pesannya ke setiap target.
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Pewarisan
single_assignment
Persyaratan
Header: agents.h
Namespace: konkurensi
terima_pesan
Menerima pesan yang ditawarkan oleh blok olahpesan ini single_assignment , mengembalikan salinan pesan ke pemanggil.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek message yang ditawarkan dari runtime_object_identity.
Tampilkan Nilai
Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.
Keterangan
Blok single_assignment olahpesan mengembalikan salinan pesan ke targetnya, daripada mentransfer kepemilikan pesan yang saat ini disimpan.
konsumsi_pesan
Memproses pesan yang sebelumnya ditawarkan oleh single_assignment dan disimpan oleh target, mengembalikan salinan pesan kepada pemanggil.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity yang message dikonsumsi.
Tampilkan Nilai
Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.
Keterangan
Mirip dengan accept, tetapi selalu didahului oleh panggilan ke reserve.
memiliki_nilai
Memeriksa apakah blok olahpesan single_assignment ini telah diinisialisasi dengan nilai atau belum.
bool has_value() const;
Tampilkan Nilai
true jika blok telah menerima nilai, false jika tidak.
notifikasi_tujuan_tautan
Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini single_assignment.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parameter
_PTarget
Penunjuk menuju target yang baru saja ditautkan.
sebarkan_pesan
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini single_assignment . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber.
virtual 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
Tanda message_status tentang keputusan target terhadap pesan.
menyebarkan_ke_semua_target
Letakkan message_PMessage di dalam blok pesan ini single_assignment lalu tawarkan kepada seluruh target yang ditautkan.
virtual void propagate_to_any_targets(_Inout_opt_ message<T>* _PMessage);
Parameter
_PMessage
Penunjuk ke message yang diambil alih oleh blok olahpesan ini single_assignment.
pesan_rilis
Menghapus reservasi pesan yang sebelumnya.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
runtime_object_identity dari objek message yang dilepaskan.
pesan_cadangan
Mengamankan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini single_assignment.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek message dari runtime_object_identity sedang dicadangkan.
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 proses penyebaran setelah reservasi dilepaskan.
virtual void resume_propagation();
kirim_pesan
Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini single_assignment . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber.
virtual message_status send_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
Tanda message_status tentang keputusan target terhadap pesan.
penugasan tunggal
Membuat single_assignment blok pesan.
single_assignment();
single_assignment(
filter_method const& _Filter);
single_assignment(
Scheduler& _PScheduler);
single_assignment(
Scheduler& _PScheduler,
filter_method const& _Filter);
single_assignment(
ScheduleGroup& _PScheduleGroup);
single_assignment(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter);
Parameter
_Filter
Fungsi filter yang menentukan apakah pesan yang ditawarkan harus diterima.
_PScheduler
Objek Scheduler di mana tugas propagasi untuk blok olahpesan single_assignment dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup di mana tugas propagasi untuk blok olahpesan single_assignment dijadwalkan. Objek Scheduler yang digunakan dapat disimpulkan dari grup jadwal.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler parameter atau _PScheduleGroup .
Jenis filter_method adalah funktor dengan tanda tangan bool (T const &) yang dipanggil oleh blok pesan single_assignment ini untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~single_assignment
Menghancurkan blok pesan single_assignment.
~single_assignment();
nilai
Mendapatkan referensi ke payload saat ini dari pesan yang disimpan di blok olahpesan single_assignment.
T const& value();
Tampilkan Nilai
Payload dari pesan yang disimpan.
Keterangan
Metode ini akan menunggu hingga pesan tiba jika tidak ada pesan yang saat ini disimpan di single_assignment blok olahpesan.
Lihat juga
Namespace layanan konkurensi
Kelas overwrite_buffer
Kelas unbounded_buffer