agent Sınıfı

Tüm bağımsız aracılar için temel sınıf olarak kullanılması amaçlanan bir sınıf. Durumu diğer aracılardan gizlemek ve ileti geçirmeyi kullanarak etkileşime geçmek için kullanılır.

Sözdizimi

class agent;

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
ajan Aşırı yüklü Bir aracı oluşturur.
~aracı Yıkıcı Aracıyı yok eder.

Genel Yöntemler

Veri Akışı Adı Açıklama
İptal Bir aracıyı agent_created veya agent_runnable durumlarından agent_canceled durumuna taşır.
start Bir temsilciyi agent_created halinden agent_runnable haline taşır ve yürütülmesi için planlar.
durum Aracıdan eşzamanlı durum bilgisi kaynağı.
status_port Durum bilgisi için aracının zaman uyumsuz kaynağı.
beklemek Ajanın görevini tamamlamasını bekler.
hepsini_bekle Belirtilen tüm ajanların görevlerini tamamlamasını bekler.
wait_for_one Belirtilen ajanlardan herhangi birinin görevini tamamlamasını bekler.

Korumalı Yöntemler

Veri Akışı Adı Açıklama
yapılmış Ajanı, görevinin tamamlandığını belirten agent_done durumuna taşır.
Çalıştırın Bir temsilcinin ana görevini ifade eder. run türetilmiş bir sınıfta geçersiz kılınmalıdır ve aracı başlatıldıktan sonra ne yapması gerektiğini belirtir.

Açıklamalar

Daha fazla bilgi için Zaman Uyumsuz Aracılar'a bakın.

Devralma Hiyerarşisi

agent

Gereksinimler

Üst bilgi: agents.h

Ad alanı: eşzamanlılık

ajan

Bir aracı oluşturur.

agent();

agent(Scheduler& _PScheduler);

agent(ScheduleGroup& _PGroup);

Parametreler

_PScheduler
Ajanın yürütme görevinin zamanlandığı Scheduler nesnesi.

_PGroup
Ajanın yürütme görevinin zamanlandığı ScheduleGroup nesnesi. Scheduler kullanılan nesne zamanlama grubuyla belirtilir.

Açıklamalar

_PScheduler veya _PGroup parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı kullanır.

~ajan

Aracıyı yok eder.

virtual ~agent();

Açıklamalar

Terminal durumunda olmayan bir aracıyı yok etmek bir hatadır ( agent_done veya agent_canceled). Bu, agent sınıfından devralan bir sınıfın yıkıcısında ajanın bir terminal durumuna ulaşmasını bekleyerek önlenebilir.

İptal

Bir aracıyı agent_created veya agent_runnable durumlarından agent_canceled durumuna taşır.

bool cancel();

Dönüş Değeri

true ajan iptal edildiyse, false aksi takdirde. Aracı zaten çalışmaya başladıysa veya zaten tamamlandıysa iptal edilemez.

done

Ajanı, görevinin tamamlandığını belirten agent_done durumuna taşır.

bool done();

Dönüş Değeri

true agent agent_done durumuna taşınırsa, false aksi takdirde. İptal edilmiş bir temsilci, agent_done durumuna taşınamaz.

Açıklamalar

run yönteminin sonunda, aracınızın yürütülmesinin tamamlandığını bildiğinizde bu yöntem çağrılmalıdır.

çalıştır

Bir temsilcinin ana görevini ifade eder. run türetilmiş bir sınıfta geçersiz kılınmalıdır ve aracı başlatıldıktan sonra ne yapması gerektiğini belirtir.

virtual void run() = 0;

Açıklamalar

Çağrılmadan hemen önce aracı durumu agent_started olarak değiştirilir. Geri dönmeden önce uygun bir duruma sahip aracının üzerinde yöntemi done çağırmalı ve herhangi bir istisna atmamalıdır.

başla

Bir temsilciyi agent_created halinden agent_runnable haline taşır ve yürütülmesi için planlar.

bool start();

Dönüş Değeri

true aracı doğru şekilde başlatıldıysa, false aksi takdirde. İptal edilmiş bir ajan başlatılamaz.

durum

Aracıdan eşzamanlı durum bilgisi kaynağı.

agent_status status();

Dönüş Değeri

Ajanın geçerli durumunu döndürür. Döndürülen bu durumun döndürüldükten hemen sonra değişebileceğini unutmayın.

durum_portu

Durum bilgisi için aracının zaman uyumsuz kaynağı.

ISource<agent_status>* status_port();

Dönüş Değeri

Ajanın geçerli durumu hakkında mesaj gönderebilen bir mesaj kaynağı döndürür.

bekle

Ajanın görevini tamamlamasını bekler.

static agent_status __cdecl wait(
    _Inout_ agent* _PAgent,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametreler

_PAgent
Ajana bekleyeceği bir işaretçi.

_Zaman aşımı
Milisaniye cinsinden bekleyebileceğiniz en uzun süre.

Dönüş Değeri

Ajanın bekleme tamamlandığında durumu agent_status. Bu agent_canceled veya agent_done olabilir.

Açıklamalar

Bir aracı görevi, aracı agent_canceled veya agent_done durumlarına girdiğinde tamamlanır.

parametresi _Timeout sabiti COOPERATIVE_TIMEOUT_INFINITEdışında bir değere sahipse, aracı görevini tamamlamadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur.

tümünü_bekle

Belirtilen tüm ajanların görevlerini tamamlamasını bekler.

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);

Parametreler

count
dizisinde _PAgentsbulunan aracı işaretçilerinin sayısı.

_PAgents
Aracıların beklemesi için işaretçi dizisi.

_PStatus
Temsilci durumlarının dizisine işaret eden bir işaretçi. Her durum değeri, yöntem döndürdüğünde ilgili aracının durumunu temsil eder.

_Zaman aşımı
Milisaniye cinsinden bekleyebileceğiniz en uzun süre.

Açıklamalar

Bir aracı görevi, aracı agent_canceled veya agent_done durumlarına girdiğinde tamamlanır.

parametresi _Timeout sabiti COOPERATIVE_TIMEOUT_INFINITEdışında bir değere sahipse, aracı görevini tamamlamadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur.

wait_for_one

Belirtilen ajanlardan herhangi birinin görevini tamamlamasını bekler.

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);

Parametreler

count
dizisinde _PAgents bulunan ajan işaretçilerinin sayısı.

_PAgents
Beklenecek ajanlara işaret eden işaretçi dizisi.

_Durum
Aracı durumunun yerleştirileceği değişkene başvuru.

_Dizin
Aracı dizininin yerleştirileceği değişkene başvuru.

_Zaman aşımı
Milisaniye cinsinden bekleyebileceğiniz en uzun süre.

Açıklamalar

agent_canceled veya agent_done durumlarına girdiğinde bir aracı görevi tamamlanır.

parametresi _Timeout sabiti COOPERATIVE_TIMEOUT_INFINITEdışında bir değere sahipse, aracı görevini tamamlamadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur.

Ayrıca bkz.

Eşzamanlılık Ad Alanı