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
Dilakukan 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.

Dilakukan

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.

start

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_canceledagent_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.

_Status
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.

Baca juga

Namespace layanan konkurensi