Aracılığıyla paylaş


Asenkron Ajanlar

Zaman uyumsuz aracı (veya yalnızca aracı), daha büyük bilgi işlem görevlerini çözmek için diğer aracılarla zaman uyumsuz olarak çalışan bir uygulama bileşenidir. Bir aracıyı, belirli bir yaşam döngüsüne sahip bir görev olarak düşünün. Örneğin, bir aracı bir giriş/çıkış cihazından (klavye, disk üzerindeki bir dosya veya ağ bağlantısı gibi) verileri okuyabilir ve başka bir aracı kullanılabilir duruma geldiğinde bu veriler üzerinde eylem gerçekleştirebilir. Birinci ajan, ikinci ajana daha fazla verinin mevcut olduğunu bildirmek için mesaj iletimini kullanır. Eşzamanlılık Çalışma Zamanı görev zamanlayıcı, aracıların daha az verimli önalım gerektirmeden işbirliği içinde engellemesini ve verimini sağlamasını sağlayan verimli bir mekanizma sağlar.

Aracılar Kitaplığı, zaman uyumsuz bir aracıyı temsil etmek için eşzamanlılık::agent sınıfını tanımlar. agent , eşzamanlılık::agent::run sanal yöntemini bildiren bir soyut sınıftır. Ajan run yöntemi ile gerçekleştirilen görevi yürütür. run soyut olduğundan, bu yöntemi öğesinden agenttüretdiğiniz her sınıfta uygulamanız gerekir.

Aracı Yaşam Döngüsü

Ajanların belirli bir yaşam döngüsü vardır. concurrency::agent_status numaralandırması bir aracının çeşitli durumlarını tanımlar. Aşağıdaki çizim, aracıların bir durumdan diğerine nasıl ilerlediğini gösteren bir durum diyagramıdır. Bu çizimde, düz çizgiler uygulamanızdan çağırdığınız yöntemleri temsil eder; noktalı çizgiler çalışma zamanından çağrılan yöntemleri temsil eder.

Aracı Durumu Diyagramı.

Aşağıdaki tabloda, numaralandırmadaki agent_status her durum açıklanmaktadır.

Ajan Durumu Açıklama
agent_created Aracı yürütme için zamanlanmamış.
agent_runnable Çalışma zamanı ajanı yürütme için zamanlıyor.
agent_started Aracı başlatıldı ve çalışıyor.
agent_done Aracı tamamlandı.
agent_canceled started durumuna girmeden önce aracı iptal edildi.

agent_created bir aracının ilk durumudur ve agent_runnableagent_started etkin durumlardır ve agent_doneagent_canceled terminal durumlarıdır.

concurrency::agent::status yöntemini kullanarak bir agent nesnesinin mevcut durumunu alın. Her ne kadar status yöntemi eşzamanlılık açısından güvenli olsa da, yöntem status döndüğünde aracının durumu değişebilir. Örneğin, status yöntemini çağırdığınızda bir aracı agent_started durumunda bulunuyor olabilir, ancak status yöntemi döndüğünden hemen sonra agent_done durumuna geçebilir.

Yöntemler ve Özellikler

Aşağıdaki tabloda sınıfına ait bazı önemli yöntemler gösterilmektedir agent . Tüm agent sınıf yöntemleri hakkında daha fazla bilgi için bkz . aracı Sınıfı.

Metot Açıklama
başlangıç agent nesnesini yürütme için zamanlar ve agent_runnable durumuna ayarlar.
Çalıştırın agent nesnesi tarafından gerçekleştirilecek görevi yürütür.
yapılmış Aracıyı agent_done duruma taşır.
İptal Aracı başlatılmadıysa, bu yöntem aracının yürütülmesini iptal eder ve duruma ayarlar agent_canceled .
durum agent nesnesinin geçerli durumu alınır.
beklemek agent nesnesinin agent_done veya agent_canceled durumuna girmesini bekler.
hepsi_için_bekle Tüm sağlanan agent nesnelerin agent_done veya agent_canceled durumuna girmesini bekler.
birini_bekle Sağlanan agent nesnelerden en az birinin agent_done veya agent_canceled durumuna girmesini bekler.

Bir aracı nesnesi oluşturduktan sonra, yürütme için planlamak üzere `concurrency::agent::start` metodunu çağırın. Çalışma zamanı, aracıyı zamanlayıp agent_runnable durumuna ayarladıktan sonra run yöntemini çağırır.

Çalışma zamanı, zaman uyumsuz aracılar tarafından oluşan özel durumları yönetmez. Özel durum işleme ve aracılar hakkında daha fazla bilgi için bkz . Özel Durum İşleme.

Örnek

Temel aracı tabanlı bir uygulamanın nasıl oluşturulacağını gösteren bir örnek için bkz . İzlenecek Yol: Aracı Tabanlı Uygulama Oluşturma.

Ayrıca bkz.

Asenkron Aracılar Kitaplığı