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 pengiriman pesan.
Sintaks
class agent;
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| agen | Kelebihan beban. Membangun agen. |
| ~agent Destructor | Menghancurkan agen tersebut. |
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 asinkron informasi status dari agen. |
| Tunggu | Menunggu agen menyelesaikan tugasnya. |
| wait_for_all | Menunggu semua agen yang ditentukan untuk menyelesaikan tugas mereka. |
| tunggu_untuk_satu | Menunggu salah satu agen yang ditentukan untuk menyelesaikan tugasnya. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
| selesai | Memindahkan agen ke status agent_done, mengindikasikan bahwa agen telah selesai. |
| jalankan | Mewakili tugas utama agen.
run harus ditimpa ulang dalam kelas turunan, dan menetapkan tindakan yang harus dilakukan oleh agen setelah dimulai. |
Keterangan
Untuk informasi selengkapnya, lihat Agen Asinkron.
Hierarki Pewarisan
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 dapat disimpulkan dari grup jadwal.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler parameter atau _PGroup .
~agen
Menghancurkan agen.
virtual ~agent();
Keterangan
Adalah suatu kesalahan untuk menghancurkan agen yang tidak berada dalam keadaan terminal (baik agent_done atau agent_canceled). Ini dapat dihindari dengan menunggu agen mencapai status terminal di destruktor dari kelas yang mewarisi agent.
batalkan
Memindahkan agen dari agent_created status atau agent_runnable ke status agent_canceled .
bool cancel();
Tampilkan Nilai
true jika agen dibatalkan, false sebaliknya. Agen tidak dapat dibatalkan jika sudah mulai berjalan atau telah selesai.
selesai
Memindahkan agen ke status agent_done, mengindikasikan 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.
eksekusi
Mewakili tugas utama agen.
run harus ditimpa ulang dalam kelas turunan, dan menetapkan tindakan yang harus dilakukan oleh agen setelah dimulai.
virtual void run() = 0;
Keterangan
Status agen diubah ke agent_started tepat sebelum metode ini dieksekusi. Metode harus memanggil done pada agen dengan status yang sesuai sebelum kembali, dan tidak akan melempar 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 sebaliknya. 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 asinkron informasi status 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
Referensi ke agen yang ditunggu.
_Timeout
Waktu maksimum untuk menunggu, dalam milidetik.
Tampilkan Nilai
Kondisi agent_status agen ketika penantian selesai. Ini bisa salah satu agent_canceled atau 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
Sekumpulan pointer yang mengarah ke agen untuk ditunggu.
_PStatus
Penunjuk (pointer) 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 keadaan agent_canceled 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.
tunggu_satu
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-agen yang harus ditunggu.
_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 keadaan agent_canceled 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.