Kelas overwrite_buffer
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 accept
dengan , 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
_Filter
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 _PMessage
yang 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
.
Baca juga
Namespace layanan konkurensi
Kelas unbounded_buffer
Kelas single_assignment
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk