Kelas unbounded_buffer
unbounded_buffer
Blok olahpesan adalah multi-target, multi-sumber, yang diurutkan propagator_block
mampu menyimpan jumlah pesan yang tidak terbatas.
Sintaks
template<
class _Type
>
class unbounded_buffer : public propagator_block<multi_link_registry<ITarget< _Type>>, multi_link_registry<ISource< _Type>>>;
Parameter
_Jenis
Jenis payload pesan yang disimpan dan disebarkan oleh buffer.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
unbounded_buffer | Kelebihan beban. Membuat unbounded_buffer blok olahpesan. |
~unbounded_buffer Destructor | unbounded_buffer Menghancurkan blok olahpesan. |
Metode Publik
Nama | Deskripsi |
---|---|
hapus antrean | Menghapus item dari unbounded_buffer blok olahpesan. |
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 , mentransfer kepemilikan ke pemanggil. |
consume_message | Mengonsumsi pesan yang sebelumnya ditawarkan oleh unbounded_buffer 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 unbounded_buffer . |
process_input_messages | Tempatkan message _PMessage dalam blok olahpesan ini unbounded_buffer dan mencoba menawarkannya ke semua target yang ditautkan. |
propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini unbounded_buffer . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber. |
propagate_output_messages | Tempatkan message _PMessage dalam blok olahpesan ini unbounded_buffer dan mencoba menawarkannya ke semua target yang ditautkan. (Mengambil alih source_block::p ropagate_output_messages.) |
release_message | Merilis reservasi pesan sebelumnya. (Mengambil alih source_block::release_message.) |
reserve_message | Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini unbounded_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 unbounded_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.) |
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
unbounded_buffer
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini unbounded_buffer
, mentransfer kepemilikan ke pemanggil.
virtual message<_Type> * 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 unbounded_buffer
blok olahpesan dan dicadangkan oleh target, 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 message
objek yang sekarang dimiliki pemanggil.
Keterangan
Mirip accept
dengan , tetapi selalu didahului oleh panggilan ke reserve
.
hapus antrean
Menghapus item dari unbounded_buffer
blok olahpesan.
_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.
link_target_notification
Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini unbounded_buffer
.
virtual void link_target_notification(
_Inout_ ITarget<_Type> * _PTarget
);
Parameter
_PTarget
Penunjuk ke target yang baru ditautkan.
propagate_message
Secara asinkron meneruskan pesan dari ISource
blok ke blok olahpesan ini unbounded_buffer
. Ini dipanggil oleh propagate
metode , 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
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
propagate_output_messages
Tempatkan message
_PMessage
dalam blok olahpesan ini unbounded_buffer
dan mencoba menawarkannya ke semua target yang ditautkan.
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 mengambil kepemilikan, dan tidak ada target lain yang kemudian bisa mendapatkan pesan.
process_input_messages
Tempatkan message
_PMessage
dalam blok olahpesan ini unbounded_buffer
dan mencoba menawarkannya ke semua target yang ditautkan.
virtual void process_input_messages(
_Inout_ message<_Type> * _PMessage
);
Parameter
_PMessage
Penunjuk ke pesan yang akan diproses.
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 unbounded_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();
send_message
Secara sinkron meneruskan pesan dari ISource
blok ke blok olahpesan ini unbounded_buffer
. Ini dipanggil oleh send
metode , 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
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.
unbounded_buffer
Membuat unbounded_buffer
blok olahpesan.
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
tempat tugas penyebaran untuk unbounded_buffer
blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup
tempat tugas penyebaran untuk unbounded_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 (_Type const &)
yang dipanggil oleh blok olahpesan ini unbounded_buffer
untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~unbounded_buffer
unbounded_buffer
Menghancurkan blok olahpesan.
~unbounded_buffer();
Baca juga
Namespace layanan konkurensi
Kelas overwrite_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