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.
overwrite_buffer Blok olahpesan adalah multi-target, multi-sumber, yang diurutkan propagator_block mampu menyimpan satu pesan pada satu waktu. Pesan baru menimpa pesan yang sebelumnya disimpan.
Sintaks
template<class T>
class overwrite_buffer : 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 |
|---|---|
| overwrite_buffer | Kelebihan beban. Membuat overwrite_buffer blok olahpesan. |
| ~overwrite_buffer Destructor | overwrite_buffer Menghancurkan blok olahpesan. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| has_value | Memeriksa apakah blok olahpesan ini overwrite_buffer belum memiliki nilai. |
| value | Mendapatkan referensi ke payload pesan saat ini yang disimpan di overwrite_buffer blok olahpesan. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini overwrite_buffer , mengembalikan salinan pesan ke pemanggil. |
| consume_message | Mengonsumsi pesan yang sebelumnya ditawarkan oleh overwrite_buffer blok olahpesan dan dicadangkan oleh target, mengembalikan salinan pesan ke pemanggil. |
| link_target_notification | Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini overwrite_buffer . |
| propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini overwrite_buffer . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber. |
| propagate_to_any_targets | Tempatkan message _PMessage di blok olahpesan ini overwrite_buffer dan tawarkan ke semua target yang ditautkan. |
| release_message | Merilis reservasi pesan sebelumnya. (Mengambil alih source_block::release_message.) |
| reserve_message | Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini overwrite_buffer . (Mengambil alih source_block::reserve_message.) |
| resume_propagation | Melanjutkan penyebaran setelah reservasi dirilis. (Mengambil alih source_block::resume_propagation.) |
| send_message | Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini overwrite_buffer . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber. |
| supports_anonymous_source | Mengambil alih supports_anonymous_source metode untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan. (Penimpaan ITarget::supports_anonymous_source.) |
Keterangan
Blok overwrite_buffer olahpesan menyebarluaskan salinan pesan tersimpannya ke setiap targetnya.
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
overwrite_buffer
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini overwrite_buffer , mengembalikan salinan pesan ke pemanggil.
virtual message<T>* 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.
Keterangan
Blok overwrite_buffer olahpesan mengembalikan salinan pesan ke targetnya, daripada mentransfer kepemilikan pesan yang saat ini disimpan.
consume_message
Mengonsumsi pesan yang sebelumnya ditawarkan oleh overwrite_buffer blok olahpesan dan dicadangkan oleh target, mengembalikan salinan pesan ke pemanggil.
virtual message<T>* 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.
has_value
Memeriksa apakah blok olahpesan ini overwrite_buffer belum memiliki nilai.
bool has_value() const;
Tampilkan Nilai
true jika blok telah menerima nilai, false jika tidak.
link_target_notification
Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini overwrite_buffer .
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parameter
_PTarget
Penunjuk ke target yang baru ditautkan.
~overwrite_buffer
overwrite_buffer Menghancurkan blok olahpesan.
~overwrite_buffer();
overwrite_buffer
Membuat overwrite_buffer blok olahpesan.
overwrite_buffer();
overwrite_buffer(
filter_method const& _Filter);
overwrite_buffer(
Scheduler& _PScheduler);
overwrite_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter);
overwrite_buffer(
ScheduleGroup& _PScheduleGroup);
overwrite_buffer(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter);
Parameter
_Saringan
Fungsi filter yang menentukan apakah pesan yang ditawarkan harus diterima.
_PScheduler
Objek Scheduler tempat tugas penyebaran untuk overwrite_buffer blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup tempat tugas penyebaran untuk overwrite_buffer 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 overwrite_buffer untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
propagate_message
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini overwrite_buffer . Ini dipanggil oleh propagate metode , 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
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
propagate_to_any_targets
Tempatkan message _PMessage di blok olahpesan ini overwrite_buffer dan tawarkan ke semua target yang ditautkan.
virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);
Parameter
_PMessage
Penunjuk ke message objek yang kepemilikannya overwrite_buffer telah diambil.
Keterangan
Metode ini menimpa pesan saat ini dengan overwrite_buffer pesan _PMessageyang baru diterima .
send_message
Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini overwrite_buffer . Ini dipanggil oleh send metode , 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
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
supports_anonymous_source
Mengambil alih supports_anonymous_source metode untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan.
virtual bool supports_anonymous_source();
Tampilkan Nilai
true karena blok tidak menunda pesan yang ditawarkan.
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 overwrite_buffer .
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity yang message 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 penyebaran setelah reservasi dirilis.
virtual void resume_propagation();
value
Mendapatkan referensi ke payload pesan saat ini yang disimpan di overwrite_buffer blok olahpesan.
T value();
Tampilkan Nilai
Payload pesan yang saat ini disimpan.
Keterangan
Nilai yang overwrite_buffer disimpan dalam dapat berubah segera setelah metode ini kembali. Metode ini akan menunggu hingga pesan tiba jika tidak ada pesan yang saat ini disimpan di overwrite_buffer.
Lihat juga
Namespace layanan konkurensi
Kelas unbounded_buffer
Kelas single_assignment