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.
Kelas ISource adalah antarmuka untuk semua blok sumber. Pesan dari blok sumber dipancarkan ke blok ITarget.
Sintaks
template<class T>
class ISource;
Parameter
T
Jenis data payload dalam pesan yang dihasilkan oleh blok sumber.
Anggota
Typedef Publik
| Nama | Deskripsi |
|---|---|
source_type |
Alias jenis untuk T. |
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| ~ISource Destructor |
ISource Menghancurkan objek. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| terima | Ketika ditimpa di kelas turunan, menerima pesan yang ditawarkan oleh blok ini ISource , mentransfer kepemilikan ke pemanggil. |
| acquire_ref | Ketika metode ini diubah dalam kelas turunan, memperoleh penghitungan referensi pada blok ISource ini untuk mencegah penghapusan. |
| mengonsumsi | Saat diterapkan dalam kelas turunan, mengambil alih pesan yang sebelumnya ditawarkan oleh blok ini ISource dan berhasil dicadangkan oleh target, mengalihkan kepemilikan ke pemanggil. |
| link_target | Ketika diimplementasikan dalam kelas turunan, menautkan blok target ke blok ISource ini. |
| lepaskan | Saat ditimpa di kelas turunan, merilis reservasi pesan yang berhasil sebelumnya. |
| release_ref | Ketika diimplementasikan dalam kelas turunan, mengurangi jumlah referensi dari blok ini ISource. |
| cadangan | Ketika dioverride dalam kelas turunan, memesan kembali pesan yang sebelumnya ditawarkan oleh blok ISource ini. |
| unlink_target | Ketika digantikan di kelas turunan, memutus blok target dari blok ISource ini, jika ditemukan telah ditautkan sebelumnya. |
| unlink_targets | Ketika dieksekusi di kelas turunan, memutuskan semua tautan blok target dari blok ISource ini. |
Keterangan
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Pewarisan
ISource
Persyaratan
Header: agents.h
Namespace: konkurensi
Menerima
Saat dilakukan override di kelas turunan, menerima pesan yang ditawarkan oleh blok ISource ini, mentransfer kepemilikan ke pemanggil.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Objek message yang ditawarkan dari runtime_object_identity.
_PTarget
Penunjuk ke blok sasaran yang memanggil metode accept.
Tampilkan Nilai
Penunjuk ke pesan yang sekarang dimiliki pemanggil.
Keterangan
Metode accept ini dipanggil oleh target saat pesan sedang ditawarkan oleh blok ini ISource . Penunjuk pesan yang dikembalikan mungkin berbeda dari yang diteruskan ke propagate metode ITarget blok, jika sumber ini memutuskan untuk membuat salinan pesan.
acquire_ref
Ketika metode ini diubah dalam kelas turunan, memperoleh penghitungan referensi pada blok ISource ini untuk mencegah penghapusan.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Penunjuk ke blok target yang memanggil metode ini.
Keterangan
Metode ini dipanggil oleh objek ITarget yang sedang ditautkan ke sumber ini selama metode link_target.
mengonsumsi
Saat diterapkan dalam kelas turunan, mengambil alih pesan yang sebelumnya ditawarkan oleh blok ini ISource dan berhasil dicadangkan oleh target, mengalihkan kepemilikan ke pemanggil.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Bagian runtime_object_identity dari objek message yang dipesan.
_PTarget
Penunjuk ke blok sasaran yang memanggil metode consume.
Tampilkan Nilai
Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.
Keterangan
Metode consume ini mirip dengan accept, tetapi harus selalu didahului oleh panggilan ke reserve yang mengembalikan true.
~ISource
ISource Menghancurkan objek.
virtual ~ISource();
link_target
Ketika diimplementasikan dalam kelas turunan, menautkan blok target ke blok ISource ini.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Penunjuk ke blok target yang ditautkan ke blok ini ISource .
rilis
Saat ditimpa di kelas turunan, merilis reservasi pesan yang berhasil sebelumnya.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Bagian runtime_object_identity dari objek message yang dipesan.
_PTarget
Penunjuk ke blok sasaran yang memanggil metode release.
release_ref
Ketika diimplementasikan dalam kelas turunan, mengurangi jumlah referensi dari blok ini ISource.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Penunjuk ke blok target yang memanggil metode ini.
Keterangan
Metode ini dipanggil oleh objek ITarget yang sedang dilepaskan tautannya dari sumber ini. Blok sumber diperbolehkan melepaskan sumber daya apa pun yang dicadangkan untuk blok target.
cadangan
Ketika dioverride dalam kelas turunan, memesan kembali pesan yang sebelumnya ditawarkan oleh blok ISource ini.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_MsgId
Objek message yang ditawarkan dari runtime_object_identity.
_PTarget
Penunjuk ke blok sasaran yang memanggil metode reserve.
Tampilkan Nilai
true jika pesan berhasil dicadangkan, false jika tidak. Reservasi dapat gagal karena banyak alasan, termasuk: pesan sudah dicadangkan atau diterima oleh target lain, sumber dapat menolak reservasi, dan sebagainya.
Keterangan
Setelah Anda memanggil reserve, jika berhasil, Anda harus memanggil consume atau release untuk memastikan bahwa kepemilikan pesan diambil atau dilepas, masing-masing.
unlink_target
Ketika digantikan di kelas turunan, memutus blok target dari blok ISource ini, jika ditemukan telah ditautkan sebelumnya.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Parameter
_PTarget
Penunjuk ke blok target dihapus tautannya dari blok ini ISource .
putuskan_tautan_target
Ketika dieksekusi di kelas turunan, memutuskan semua tautan blok target dari blok ISource ini.
virtual void unlink_targets() = 0;