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

ISource

ITarget

source_block

propagator_block

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 acceptdengan , 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.

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