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

Lihat juga

Namespace layanan konkurensi