Zamanlayıcı örnekleri
Bu belge Zamanlayıcı durumlarda eşzamanlılık çalışma zamanı ve nasıl kullanılacağını açıklar concurrency::Scheduler ve concurrency::CurrentScheduler sınıfları oluşturmak ve Zamanlayıcı örnekleri yönetmek için. Zamanlayıcı örnekleri açık planlama ilkeleri belirli türdeki iş yükleri ile ilişkilendirmek istediğinizde yararlıdır. Örneğin, yükseltilmiş iş parçacığı öncelik sınıfında bazı görevleri çalıştırmak ve normal iş parçacığı öncelik sırasında diğer görevleri çalıştırmak için varsayılan Zamanlayıcı kullanmak için bir Zamanlayıcı örneği oluşturabilirsiniz.
İpucu
Bu nedenle, uygulamanızı oluşturmak için gerekli değildir ve varsayılan Zamanlayıcı eşzamanlılık çalışma zamanı sağlar.Görev Zamanlayıcı, uygulamalarınızın performansını hassas yardımcı olur çünkü ile başlatmanızı öneririz Paralel Desenler kitaplığının (ppl) veya Zaman uyumsuz aracıları kitaplığı eşzamanlılık çalýþma yeniyseniz.
Bölümler
Zamanlayıcı ve CurrentScheduler sınıfları
Zamanlayıcı örneği oluşturma
Zamanlayıcı örnek yaşam yönetme
Yöntemleri ve özellikleri
Örnek
Zamanlayıcı ve CurrentScheduler sınıfları
Görev Zamanlayıcı'yı uygulamaların veya daha fazlasını kullanmasını sağlar Zamanlayıcı örnekleri çalışması zamanlamak için. Concurrency::Scheduler sınıf Zamanlayıcısı örneği temsil eder ve görevleri zamanlamak için ilgili işlevleri kapsülleyen.
Bir iş parçacığı için bir Zamanlayıcı bağlı olarak bilinen bir yürütme içeriği, ya da sadece İçerik. Bir Zamanlayıcı her zaman geçerli içerik üzerinde etkin olabilir. Etkin Zamanlayıcısı olarak da bilinir Geçerli Zamanlayıcı. Eşzamanlılık çalışma zamanı kullanır concurrency::CurrentScheduler için geçerli Zamanlayıcı erişim sağlamak için sınıf. Bir içerik için geçerli Zamanlayıcısı geçerli Zamanlayıcı başka bir içerik için farklı olabilir. Çalışma zamanı geçerli Zamanlayıcısı işlem düzeyi gösterimi sağlamaz.
Genellikle, CurrentScheduler sınıf geçerli Zamanlayıcı erişmek için kullanılır. Scheduler Sınıfı, geçerli olmayan bir Zamanlayıcı yönetmek istediğinizde yararlıdır.
Nasıl oluşturulacağı ve Zamanlayıcı örneğini yönetmek aşağıdaki bölümlerde açıklanmaktadır. Bu görevleri gösteren bir tam örnek için bkz: Nasıl yapılır: bir Zamanlayıcı örneğini yönetmek.
Top
Zamanlayıcı örneği oluşturma
Bu üç şekilde oluşturmak için bir Scheduler nesne:
Hiçbir Zamanlayıcı varsa, çalışma zamanı işlevi, örneğin, bir paralel algoritmanın çalışma gerçekleştirmek için kullandığınız varsayılan Zamanlayıcı, çalışma zamanı oluşturur. Varsayılan Zamanlayıcısı geçerli Zamanlayıcı paralel çalışma başlatan içeriği için olur.
Concurrency::CurrentScheduler::Create yöntemi oluşturur bir Scheduler nesnesini belirli bir ilke kullanır ve bu Zamanlayıcısı geçerli içerikle ilişkilendirir.
Concurrency::Scheduler::Create yöntemi oluşturur bir Scheduler belirli bir ilke kullanır, ancak geçerli içerikle ilişkilendirir değil nesne.
Varsayılan Zamanlayıcı oluşturmak çalışma zamanı vererek aynı Zamanlayıcı paylaşmak tüm eşzamanlı görevler sağlar. Genellikle, tarafından sağlanan işlevselliği Paralel desen kitaplığı (ppl) veya Zaman uyumsuz aracıları kitaplığı paralel çalışma gerçekleştirmek için kullanılır. Bu nedenle, ilke ya da yaşam süresini denetlemek için doğrudan Zamanlayıcı ile çalışmak zorunda değil. ppl ya da aracıları kitaplığını kullandığınızda, yok ve her içerik için geçerli olan Zamanlayıcı yaptığı çalışma zamanı varsayılan Zamanlayıcı oluşturur. Bir Zamanlayıcı oluşturmak ve geçerli Zamanlayıcısı ayarlamak, çalışma zamanı görevleri zamanlamak için Zamanlayıcı kullanır. Belirli bir zamanlama İlkesi gerektiğinde ek Zamanlayıcı örneklerini oluşturun. Bir Zamanlayıcı ile ilişkili ilkeleri hakkında daha fazla bilgi için bkz: Zamanlayıcı ilkeleri.
Top
Zamanlayıcı örnek yaşam yönetme
Çalışma zamanı, yaşam süresini denetlemek için başvuru sayımı mekanizması kullanır Scheduler nesneler.
Kullandığınızda CurrentScheduler::Create yöntemini veya Scheduler::Create yöntemi oluşturmak için bir Scheduler nesne çalışma zamanı bir Zamanlayıcı, ilk başvuru sayısı ayarlar. Aradığınızda, çalışma zamanı başvuru sayısı artar. concurrency::Scheduler::Attach yöntemi. Scheduler::Attach Yöntemi associates Scheduler nesnesiyle birlikte geçerli içerik. Bu geçerli bir Zamanlayıcı kolaylaştırır. Aradığınızda CurrentScheduler::Create yöntemi, her iki çalışma oluşturur bir Scheduler nesne için geçerli içerik ekler (ve ayarlar başvuru sayısı için). Ayrıca concurrency::Scheduler::Reference yöntemi, başvuru sayısını artırmak için bir Scheduler nesnesi.
Başvuru sayma aradığınızda çalışma zamanı azaltır concurrency::CurrentScheduler::Detach yöntemi geçerli Zamanlayıcı ayırmak veya arama concurrency::Scheduler::Release yöntemi. Başvuru sayısı sıfır ulaştığında, çalışma zamanı kaynaklarýný Scheduler tüm zamanlanmış görevleri son nesne. Çalışan bir görevi geçerli Zamanlayıcı başvuru sayısını artırmak için izin verilir. Bu nedenle, başvuru sayısı sıfır ulaşır ve görev başvuru sayısı artar, çalışma zamanı yok edemiyor Scheduler başvuru sayısı yeniden sıfıra ulaşıncaya kadar tüm görevleri tamamlamak için nesne.
Çalışma zamanı iç yığını tutan Scheduler nesneler her içerik için. Aradığınızda Scheduler::Attach veya CurrentScheduler::Create yöntemi, çalışma zamanı iter Scheduler nesne geçerli içeriği yığına. Bu geçerli bir Zamanlayıcı kolaylaştırır. Aradığınızda CurrentScheduler::Detach, çalışma zamanı geçerli içeriği yığına geçerli Zamanlayıcıdan POP'ları ve öncekinin geçerli Zamanlayıcısı olarak ayarlar.
Çalışma zamanı Zamanlayıcı örnek yaşam yönetmek için çeşitli yollar sağlar. Aşağıdaki tabloda bıraktığında veya geçerli içerik oluşturan veya geçerli içerik için bir Zamanlayıcı ekler her yöntemin Zamanlayıcıdan ayırır uygun yöntemi gösterir.
Oluşturma veya ekleme yöntemi |
Bırakın veya ayırma yöntemi |
---|---|
CurrentScheduler::Create |
CurrentScheduler::Detach |
Scheduler::Create |
Scheduler::Release |
Scheduler::Attach |
CurrentScheduler::Detach |
Scheduler::Reference |
Scheduler::Release |
Uygunsuz bırakın veya ayırma yöntemi çalışma zamanında belirsiz davranış üretir.
İşlevsellik, size varsayılan Zamanlayıcı oluşturmak çalışma zamanı neden olan, örneğin, ppl, kullandığınızda değil bırakın veya bu Zamanlayıcı ayırabilirsiniz. Çalışma zamanı oluşturduğu Zamanlayıcı yaşam yönetir.
Çalışma zamanı yok edemiyor çünkü bir Scheduler tüm görevler bitmeden nesnesini kullanarak concurrency::Scheduler::RegisterShutdownEvent yöntemi veya concurrency::CurrentScheduler::RegisterShutdownEvent yöntemi bir bildirim almak için bir Scheduler nesne bozulur. Tarafından zamanlanan her görev için beklemeniz gerekir yararlıdır bir Scheduler bitirmek için nesne.
Top
Yöntemleri ve özellikleri
Bu bölümde önemli yöntemlerini özetler CurrentScheduler ve Scheduler sınıfları.
Düşünün CurrentScheduler olarak kullanmak için bir Zamanlayıcı üzerinde geçerli içerik oluşturmak için bir yardımcı sınıf. Scheduler Sınıfı başka bir içeriğe ait bir Zamanlayıcı denetlemenize olanak sağlar.
Aşağıdaki tabloda tanımlanır önemli yöntemleri gösterilmektedir CurrentScheduler sınıfı.
Method |
Description |
---|---|
Oluşturur bir Scheduler nesne belirtilen ilke kullanır ve geçerli içerikle ilişkilendirir. |
|
Bir işaretçi alır Scheduler geçerli içerikle ilişkili nesne. Bu yöntemi, başvuru sayısı artırmaz Scheduler nesnesi. |
|
Geçerli içeriği geçerli Zamanlayıcıdan ayırır ve öncekinin geçerli Zamanlayıcısı olarak ayarlar. |
|
Geçerli Zamanlayıcı yok edildiğinde, çalışma zamanı ayarlayan bir olay kaydeder. |
|
Oluşturur bir concurrency::ScheduleGroup nesnesinde geçerli Zamanlayıcısı. |
|
Zamanlama geçerli Zamanlayıcı sıra için basit bir görev ekler. |
|
Geçerli bir Zamanlayıcı ile ilişkili ilke bir kopyasını alır. |
Aşağıdaki tabloda tanımlanır önemli yöntemleri gösterilmektedir Scheduler sınıfı.
Method |
Description |
---|---|
Oluşturur bir Scheduler kullandığı belirtilen ilke nesnesi. |
|
Associates Scheduler nesnesiyle birlikte geçerli içerik. |
|
Referans sayacını artıran Scheduler nesnesi. |
|
Azaltır, başvuru sayacı Scheduler nesnesi. |
|
Çalışma zamanı ne zaman ayarlayan bir olay kaydeder Scheduler nesne bozulur. |
|
Oluşturur bir concurrency::ScheduleGroup , nesne Scheduler nesnesi. |
|
Hafif bir görevden zamanlar Scheduler nesnesi. |
|
Bir kopyası ile ilişkili ilke alır Scheduler nesnesi. |
|
Varsayılan Zamanlayıcı oluşturduğunda, çalışma için ilke ayarlar. |
|
Varsayılan ilke çağrısından önce etkin bir geri yükler SetDefaultSchedulerPolicy. Bu çağrıdan sonra varsayılan Zamanlayıcı oluşturduysanız, çalışma zamanı Zamanlayıcı oluşturmak için varsayılan ilke ayarlarını kullanır. |
Top
Örnek
Temel bir Zamanlayıcı örneğini yönetmek nasıl örnekler için bkz: Nasıl yapılır: bir Zamanlayıcı örneğini yönetmek.
Ayrıca bkz.
Görevler
Nasıl yapılır: bir Zamanlayıcı örneğini yönetmek