Kelas agen
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.