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 yang dimaksudkan untuk digunakan sebagai kelas dasar untuk semua agen independen. Ini digunakan untuk menyembunyikan status dari agen lain dan berinteraksi menggunakan pesan-lewat.
Sintaks
class agent;
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| agen | Kelebihan beban. Membangun agen. |
| ~agent Destructor | Menghancurkan agen. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| batalkan | Memindahkan agen dari agent_created status atau agent_runnable ke status agent_canceled . |
| mulai | Memindahkan agen dari agent_created status ke agent_runnable status, dan menjadwalkannya untuk eksekusi. |
| status | Sumber informasi status yang sinkron dari agen. |
| status_port | Sumber informasi status asinkron dari agen. |
| Tunggu | Menunggu agen menyelesaikan tugasnya. |
| wait_for_all | Menunggu semua agen yang ditentukan untuk menyelesaikan tugas mereka. |
| wait_for_one | Menunggu salah satu agen yang ditentukan untuk menyelesaikan tugasnya. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| selesai | Memindahkan agen ke agent_done status, menunjukkan bahwa agen telah selesai. |
| jalankan | Mewakili tugas utama agen. run harus ditimpa dalam kelas turunan, dan menentukan apa yang harus dilakukan agen setelah dimulai. |
Keterangan
Untuk informasi selengkapnya, lihat Agen Asinkron.
Hierarki Warisan
agent
Persyaratan
Header: agents.h
Namespace: konkurensi
agen
Membangun agen.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Parameter
_PScheduler
Objek Scheduler tempat tugas eksekusi agen dijadwalkan.
_PGroup
Objek ScheduleGroup tempat tugas eksekusi agen dijadwalkan. Objek Scheduler yang digunakan tersirat oleh grup jadwal.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler parameter atau _PGroup .
~agen
Menghancurkan agen.
virtual ~agent();
Keterangan
Ini adalah kesalahan untuk menghancurkan agen yang tidak dalam status terminal (baik agent_done atau agent_canceled). Ini dapat dihindari dengan menunggu agen mencapai status terminal di destruktor kelas yang mewarisi dari agent kelas.
batalkan
Memindahkan agen dari agent_created status atau agent_runnable ke status agent_canceled .
bool cancel();
Tampilkan Nilai
true jika agen dibatalkan, false jika tidak. Agen tidak dapat dibatalkan jika sudah mulai berjalan atau telah selesai.
selesai
Memindahkan agen ke agent_done status, menunjukkan bahwa agen telah selesai.
bool done();
Tampilkan Nilai
true jika agen dipindahkan ke status agent_done , false jika tidak. Agen yang telah dibatalkan tidak dapat dipindahkan ke status agent_done .
Keterangan
Metode ini harus dipanggil di akhir run metode, ketika Anda tahu eksekusi agen Anda telah selesai.
jalankan
Mewakili tugas utama agen. run harus ditimpa dalam kelas turunan, dan menentukan apa yang harus dilakukan agen setelah dimulai.
virtual void run() = 0;
Keterangan
Status agen diubah ke agent_started kanan sebelum metode ini dipanggil. Metode harus memanggil done agen dengan status yang sesuai sebelum kembali, dan mungkin tidak melemparkan pengecualian apa pun.
mulai
Memindahkan agen dari agent_created status ke agent_runnable status, dan menjadwalkannya untuk eksekusi.
bool start();
Tampilkan Nilai
true jika agen dimulai dengan benar, false jika tidak. Agen yang telah dibatalkan tidak dapat dimulai.
status
Sumber informasi status yang sinkron dari agen.
agent_status status();
Tampilkan Nilai
Mengembalikan status agen saat ini. Perhatikan bahwa status yang dikembalikan ini dapat berubah segera setelah dikembalikan.
status_port
Sumber informasi status asinkron dari agen.
ISource<agent_status>* status_port();
Tampilkan Nilai
Mengembalikan sumber pesan yang dapat mengirim pesan tentang status agen saat ini.
tunggu
Menunggu agen menyelesaikan tugasnya.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
_PAgent
Penunjuk ke agen untuk menunggu.
_Timeout
Waktu maksimum untuk menunggu, dalam milidetik.
Tampilkan Nilai
Agen agent_status ketika menunggu selesai. Ini bisa atau agent_canceled agent_done.
Keterangan
Tugas agen selesai ketika agen memasuki agent_canceled status atau agent_done .
Jika parameter _Timeout memiliki nilai selain konstanta COOPERATIVE_TIMEOUT_INFINITE, pengecualian operation_timed_out dilemparkan jika jumlah waktu yang ditentukan kedaluwarsa sebelum agen menyelesaikan tugasnya.
wait_for_all
Menunggu semua agen yang ditentukan untuk menyelesaikan tugas mereka.
static void __cdecl wait_for_all(
size_t count,
_In_reads_(count) agent** _PAgents,
_Out_writes_opt_(count) agent_status* _PStatus = NULL,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
count
Jumlah penunjuk agen yang ada dalam array _PAgents.
_PAgents
Array pointer ke agen untuk menunggu.
_PStatus
Penunjuk ke array status agen. Setiap nilai status akan mewakili status agen yang sesuai saat metode kembali.
_Timeout
Waktu maksimum untuk menunggu, dalam milidetik.
Keterangan
Tugas agen selesai ketika agen memasuki agent_canceled status atau agent_done .
Jika parameter _Timeout memiliki nilai selain konstanta COOPERATIVE_TIMEOUT_INFINITE, pengecualian operation_timed_out dilemparkan jika jumlah waktu yang ditentukan kedaluwarsa sebelum agen menyelesaikan tugasnya.
wait_for_one
Menunggu salah satu agen yang ditentukan untuk menyelesaikan tugasnya.
static void __cdecl wait_for_one(
size_t count,
_In_reads_(count) agent** _PAgents,
agent_status& _Status,
size_t& _Index,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parameter
count
Jumlah penunjuk agen yang ada dalam array _PAgents.
_PAgents
Array pointer ke agen untuk menunggu.
_Keadaan
Referensi ke variabel tempat status agen akan ditempatkan.
_Index
Referensi ke variabel tempat indeks agen akan ditempatkan.
_Timeout
Waktu maksimum untuk menunggu, dalam milidetik.
Keterangan
Tugas agen selesai ketika agen memasuki agent_canceled status atau agent_done .
Jika parameter _Timeout memiliki nilai selain konstanta COOPERATIVE_TIMEOUT_INFINITE, pengecualian operation_timed_out dilemparkan jika jumlah waktu yang ditentukan kedaluwarsa sebelum agen menyelesaikan tugasnya.