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.
unbounded_buffer Blok pesan adalah sistem multi-tujuan, multi-sumber yang teratur propagator_block yang mampu menyimpan jumlah pesan tanpa batas.
Sintaks
template<
class _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget< _Type>>, multi_link_registry<ISource< _Type>>>;
Parameter
_Jenis
Jenis payload dari pesan yang disimpan dan disebarkan oleh buffer.
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| unbounded_buffer | Kelebihan beban. Membangun unbounded_buffer blok pesan. |
| ~unbounded_buffer Destructor | Menghancurkan blok pesan unbounded_buffer. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| hapus antrean | Menghapus item dari unbounded_buffer blok pesan. |
| enqueue | Menambahkan item ke unbounded_buffer blok olahpesan. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini unbounded_buffer, dengan mentransfer kepemilikannya kepada pemanggil. |
| consume_message | Mengkonsumsi pesan yang sebelumnya ditawarkan oleh blok olahpesan unbounded_buffer dan dipesan oleh target, dengan mentransfer kepemilikan ke pemanggil. |
| notifikasi_target_tautan | Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini unbounded_buffer. |
| process_input_messages | Tempatkan message_PMessage dalam blok pesan unbounded_buffer ini dan coba tawarkan ke semua target terkait. |
| propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini unbounded_buffer . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber. |
| propagate_output_messages | Tempatkan message_PMessage di dalam blok pesan ini unbounded_buffer dan cobalah menawarkannya kepada semua target yang terhubung. (Mengganti source_block::propagate_output_messages.) |
| release_message | Menghapus reservasi pesan yang sebelumnya. (Mengganti source_block::release_message.) |
| reserve_message | Mengamankan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini unbounded_buffer. (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 unbounded_buffer . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber. |
| mendukung_sumber_anonim | Mengganti metode supports_anonymous_source untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan. (Menggantikan ITarget::supports_anonymous_source.) |
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Pewarisan
unbounded_buffer
Persyaratan
Header: agents.h
Namespace: konkurensi
terima_pesan
Menerima pesan yang ditawarkan oleh blok olahpesan ini unbounded_buffer, dengan mentransfer kepemilikannya kepada pemanggil.
virtual message<_Type> * 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.
konsumsi_pesan
Mengkonsumsi pesan yang sebelumnya ditawarkan oleh blok olahpesan unbounded_buffer dan dipesan oleh target, dengan mentransfer kepemilikan ke pemanggil.
virtual message<_Type> * 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.
mengambil dari antrean
Menghapus item dari unbounded_buffer blok pesan.
_Type dequeue();
Tampilkan Nilai
Payload pesan dihapus dari unbounded_buffer.
enqueue
Menambahkan item ke unbounded_buffer blok olahpesan.
bool enqueue(
_Type const& _Item
);
Parameter
_Item
Item yang akan ditambahkan.
Tampilkan Nilai
true jika item diterima, false jika tidak.
notifikasi_tujuan_tautan
Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini unbounded_buffer.
virtual void link_target_notification(
_Inout_ ITarget<_Type> * _PTarget
);
Parameter
_PTarget
Penunjuk menuju target yang baru saja ditautkan.
sebarkan_pesan
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini unbounded_buffer . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber.
virtual message_status propagate_message(
_Inout_ message<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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.
propagate_output_messages
Tempatkan message_PMessage di dalam blok pesan ini unbounded_buffer dan cobalah menawarkannya kepada semua target yang terhubung.
virtual void propagate_output_messages();
Keterangan
Jika pesan lain sudah berada di depan pesan ini dalam unbounded_buffer, penyebaran ke target tertaut tidak akan terjadi sampai pesan sebelumnya diterima atau dikonsumsi. Target pertama yang ditautkan berhasil accept atau consume pesan menjadi pemilik, dan tidak ada target lain yang dapat menerima pesan tersebut.
proses_pesan_masukan
Tempatkan message_PMessage di dalam blok pesan ini unbounded_buffer dan cobalah menawarkannya kepada semua target yang terhubung.
virtual void process_input_messages(
_Inout_ message<_Type> * _PMessage
);
Parameter
_PMessage
Penunjuk ke pesan yang akan diproses.
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 unbounded_buffer.
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 unbounded_buffer . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber.
virtual message_status send_message(
_Inout_ message<_Type> * _PMessage,
_Inout_ ISource<_Type> * _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.
mendukung_sumber_anonim
Mengganti metode supports_anonymous_source 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.
buffer tanpa batas
Membangun unbounded_buffer blok pesan.
unbounded_buffer();
unbounded_buffer(
filter_method const& _Filter
);
unbounded_buffer(
Scheduler& _PScheduler
);
unbounded_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter
);
unbounded_buffer(
ScheduleGroup& _PScheduleGroup
);
unbounded_buffer(
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 unbounded_buffer dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup di mana tugas propagasi untuk blok olahpesan unbounded_buffer 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 (_Type const &) yang dipanggil oleh blok pesan unbounded_buffer ini untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~unbounded_buffer
Menghancurkan blok pesan unbounded_buffer.
~unbounded_buffer();
Lihat juga
Namespace layanan konkurensi
Kelas overwrite_buffer
Kelas single_assignment