Zaman Uyumsuz Aracılar

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. İlk aracı, ikinci aracıya daha fazla veri sağlandığını bildirmek için ileti geçirmeyi 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. yöntemi aracı run tarafından 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ü

Aracıları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.

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

agent_created bir aracının ilk durumudur ve agent_runnable agent_started etkin durumlardır ve agent_done agent_canceled terminal durumlarıdır.

Bir agent nesnenin geçerli durumunu almak için concurrency::agent::status yöntemini kullanın. Yöntem eşzamanlılık açısından güvenli olsa status da, aracının durumu yöntemin döndürdüğü zamana status göre değişebilir. Örneğin, yöntemini çağırdığınızda status bir aracı durumunda agent_started olabilir, ancak yöntem döndürdüğünden agent_done hemen sonra status duruma taşınmış olabilir.

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
start Yürütme için nesnesini zamanlar agent ve duruma ayarlar agent_runnable .
Çalıştırın Nesnesi tarafından gerçekleştirilecek görevi yürütür agent .
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 Nesnenin geçerli durumunu agent alır.
beklemek nesnenin agent veya agent_canceled durumuna girmesini agent_done bekler.
wait_for_all Sağlanan agent tüm nesnelerin veya agent_canceled durumuna girmesini agent_done bekler.
wait_for_one Sağlanan agent nesnelerden en az birinin veya agent_canceled durumuna girmesini agent_done bekler.

Aracı nesnesi oluşturduktan sonra concurrency::agent::start yöntemini çağırarak yürütme için zamanlayın. Çalışma zamanı aracıyı run zamanladıktan ve duruma ayarladıktan agent_runnable sonra 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.

Zaman Uyumsuz Aracılar Kitaplığı