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 |
---|---|
aracı | Aşırı yüklendi. Bir aracı oluşturur. |
~aracı Yıkıcı | Aracıyı yok eder. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
İptal | Bir aracıyı veya agent_runnable durumundan agent_created agent_canceled duruma taşır. |
start | Bir aracıyı durumdan agent_created duruma agent_runnable taşır ve yürütme için zamanlar. |
durum | Aracıdan zaman uyumlu durum bilgisi kaynağı. |
status_port | Aracıdan gelen zaman uyumsuz durum bilgisi kaynağı. |
beklemek | Aracının görevini tamamlanmasını bekler. |
wait_for_all | Belirtilen aracıların tümünün görevlerini tamamlanmasını bekler. |
wait_for_one | Belirtilen aracılardan herhangi birinin görevini tamamlanmasını bekler. |
Korumalı Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
yapılmış | Aracıyı, aracının agent_done tamamlandığını belirten duruma taşır. |
Çalıştırın | Bir aracının ana görevini temsil 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 bkz . Zaman Uyumsuz Aracılar.
Devralma Hiyerarşisi
agent
Gereksinimler
Üst bilgi: agents.h
Ad alanı: eşzamanlılık
aracı
Bir aracı oluşturur.
agent();
agent(Scheduler& _PScheduler);
agent(ScheduleGroup& _PGroup);
Parametreler
_PScheduler
Aracının Scheduler
yürütme görevinin zamanlandığı nesne.
_PGroup
Aracının ScheduleGroup
yürütme görevinin zamanlandığı nesne. Scheduler
Kullanılan nesne zamanlama grubu tarafından örtülür.
Açıklamalar
veya _PGroup
parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı _PScheduler
kullanır.
~aracı
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, aracının sınıfından devralan bir sınıfın yıkıcısında bir terminal durumuna ulaşması beklenerek agent
önlenebilir.
İptal
Bir aracıyı veya agent_runnable
durumundan agent_created
agent_canceled
duruma taşır.
bool cancel();
Dönüş Değeri
true
aracı iptal edildiyse, false
aksi takdirde. Aracı zaten çalışmaya başladıysa veya zaten tamamlandıysa iptal edilemez.
done
Aracıyı, aracının agent_done
tamamlandığını belirten duruma taşır.
bool done();
Dönüş Değeri
true
aracı duruma taşınırsa agent_done
, false
aksi takdirde. İptal edilmiş bir aracı duruma taşınamaz agent_done
.
Açıklamalar
Aracınızın yürütülmesinin run
tamamlandığını bildiğinizde, yöntemin sonunda bu yöntem çağrılmalıdır.
Çalıştırın
Bir aracının ana görevini temsil 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
Aracı durumu, bu yöntem çağrılmadan hemen önce olarak değiştirilir agent_started
. yöntemi, döndürmeden önce uygun bir duruma sahip aracıda çağırmalıdır done
ve herhangi bir özel durum oluşturmayabilir.
start
Bir aracıyı durumdan agent_created
duruma agent_runnable
taşır ve yürütme için zamanlar.
bool start();
Dönüş Değeri
true
aracı doğru şekilde başlatıldıysa, false
aksi takdirde. İptal edilmiş bir aracı başlatılamıyor.
durum
Aracıdan zaman uyumlu durum bilgisi kaynağı.
agent_status status();
Dönüş Değeri
Aracını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.
status_port
Aracıdan gelen zaman uyumsuz durum bilgisi kaynağı.
ISource<agent_status>* status_port();
Dönüş Değeri
Aracının geçerli durumu hakkında ileti gönderebilen bir ileti kaynağı döndürür.
wait
Aracının görevini tamamlanmasını bekler.
static agent_status __cdecl wait(
_Inout_ agent* _PAgent,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parametreler
_PAgent
Aracının beklemesi için bir işaretçi.
_Zaman aşımı
Milisaniye cinsinden bekleyebileceğiniz en uzun süre.
Dönüş Değeri
agent_status
Bekleme tamamlandığında aracının. Bu veya agent_done
olabiliragent_canceled
.
Açıklamalar
Aracı veya agent_done
durumlarına girdiğinde agent_canceled
bir aracı görevi tamamlanır.
parametresi _Timeout
sabiti COOPERATIVE_TIMEOUT_INFINITE
dışında bir değere sahipse, aracı görevini tamamlamadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur.
wait_for_all
Belirtilen aracıların tümünün görevlerini tamamlanması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 _PAgents
bulunan aracı işaretçilerinin sayısı.
_PAgents
Aracıların beklemesi için işaretçi dizisi.
_PStatus
Aracı durum dizisi işaretçisi. 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
Aracı veya agent_done
durumlarına girdiğinde agent_canceled
bir aracı görevi tamamlanır.
parametresi _Timeout
sabiti COOPERATIVE_TIMEOUT_INFINITE
dışı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 aracılardan herhangi birinin görevini tamamlanması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 aracı işaretçilerinin sayısı.
_PAgents
Aracıların beklemesi için 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
Aracı veya agent_done
durumlarına girdiğinde agent_canceled
bir aracı görevi tamamlanır.
parametresi _Timeout
sabiti COOPERATIVE_TIMEOUT_INFINITE
dışında bir değere sahipse, aracı görevini tamamlamadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur.