Kelas single_assignment
single_assignment
Blok olahpesan adalah multi-target, multi-sumber, diurutkan propagator_block
mampu menyimpan satu, tulis-sekali message
.
Sintaks
template<class T>
class single_assignment : 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 |
---|---|
single_assignment | Kelebihan beban. Membuat single_assignment blok olahpesan. |
~single_assignment Destructor | single_assignment Menghancurkan blok olahpesan. |
Metode Publik
Nama | Deskripsi |
---|---|
has_value | Memeriksa apakah blok olahpesan ini single_assignment telah diinisialisasi dengan nilai. |
value | Mendapatkan referensi ke payload pesan saat ini yang disimpan di single_assignment blok olahpesan. |
Metode yang Dilindungi
Nama | Deskripsi |
---|---|
accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini single_assignment , mengembalikan salinan pesan ke pemanggil. |
consume_message | Mengonsumsi pesan yang sebelumnya ditawarkan oleh single_assignment 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 single_assignment . |
propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini single_assignment . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber. |
propagate_to_any_targets | Tempatkan message _PMessage di blok olahpesan ini single_assignment 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 single_assignment . (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 single_assignment . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber. |
Keterangan
single_assignment
Blok olahpesan menyebarluaskan salinan pesannya ke setiap target.
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
single_assignment
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini single_assignment
, 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 single_assignment
olahpesan mengembalikan salinan pesan ke targetnya, daripada mentransfer kepemilikan pesan yang saat ini disimpan.
consume_message
Mengonsumsi pesan yang sebelumnya ditawarkan oleh single_assignment
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 single_assignment
telah diinisialisasi dengan 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 single_assignment
.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parameter
_PTarget
Penunjuk ke target yang baru ditautkan.
propagate_message
Secara asinkron meneruskan pesan dari ISource
blok ke blok olahpesan ini single_assignment
. 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 single_assignment
dan tawarkan ke semua target yang ditautkan.
virtual void propagate_to_any_targets(_Inout_opt_ message<T>* _PMessage);
Parameter
_PMessage
Penunjuk ke message
blok olahpesan ini single_assignment
telah mengambil kepemilikan.
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 single_assignment
.
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 single_assignment
. 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.
single_assignment
Membuat single_assignment
blok olahpesan.
single_assignment();
single_assignment(
filter_method const& _Filter);
single_assignment(
Scheduler& _PScheduler);
single_assignment(
Scheduler& _PScheduler,
filter_method const& _Filter);
single_assignment(
ScheduleGroup& _PScheduleGroup);
single_assignment(
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 single_assignment
blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup
tempat tugas penyebaran untuk single_assignment
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 single_assignment
untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~single_assignment
single_assignment
Menghancurkan blok olahpesan.
~single_assignment();
value
Mendapatkan referensi ke payload pesan saat ini yang disimpan di single_assignment
blok olahpesan.
T const& value();
Tampilkan Nilai
Payload pesan tersimpan.
Keterangan
Metode ini akan menunggu hingga pesan tiba jika tidak ada pesan yang saat ini disimpan di single_assignment
blok olahpesan.
Baca juga
Namespace layanan konkurensi
Kelas overwrite_buffer
Kelas unbounded_buffer
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