Aracılığıyla paylaş


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

Ad Tanım
Aracısı Aşırı yüklendi. Bir aracı oluşturur.
~aracı Yıkıcı Aracıyı yok eder.

Genel Yöntemler

Ad Tanım
İptal Bir aracıyı veya agent_runnable durumundan agent_createdagent_canceled duruma taşır.
start Bir aracıyı durumdan agent_created duruma agent_runnable taşır ve yürütme için zamanlar.
status Aracıdan zaman uyumlu durum bilgisi kaynağı.
status_port Aracıdan gelen zaman uyumsuz durum bilgisi kaynağı.
Bekle 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

Ad Tanım
Yapılır 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ısı

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_createdagent_canceled duruma taşır.

bool cancel();

İade 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();

İade 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();

İade Değeri

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

status

Aracıdan zaman uyumlu durum bilgisi kaynağı.

agent_status status();

İade 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();

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

İade Değeri

agent_status Bekleme tamamlandığında aracının. Bu veya agent_doneolabiliragent_canceled.

Açıklamalar

Aracı veya agent_done durumlarına girdiğinde agent_canceled 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.

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 _PAgentsbulunan 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_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 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 _PAgentsbulunan 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_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ı