Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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.