Aracılığıyla paylaş


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

Create

Oluşturur bir Scheduler nesne belirtilen ilke kullanır ve geçerli içerikle ilişkilendirir.

Al

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.

Ayır

Geçerli içeriği geçerli Zamanlayıcıdan ayırır ve öncekinin geçerli Zamanlayıcısı olarak ayarlar.

RegisterShutdownEvent

Geçerli Zamanlayıcı yok edildiğinde, çalışma zamanı ayarlayan bir olay kaydeder.

CreateScheduleGroup

Oluşturur bir concurrency::ScheduleGroup nesnesinde geçerli Zamanlayıcısı.

ScheduleTask

Zamanlama geçerli Zamanlayıcı sıra için basit bir görev ekler.

GetPolicy

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

Create

Oluşturur bir Scheduler kullandığı belirtilen ilke nesnesi.

Ekle

Associates Scheduler nesnesiyle birlikte geçerli içerik.

Reference

Referans sayacını artıran Scheduler nesnesi.

Release

Azaltır, başvuru sayacı Scheduler nesnesi.

RegisterShutdownEvent

Çalışma zamanı ne zaman ayarlayan bir olay kaydeder Scheduler nesne bozulur.

CreateScheduleGroup

Oluşturur bir concurrency::ScheduleGroup , nesne Scheduler nesnesi.

ScheduleTask

Hafif bir görevden zamanlar Scheduler nesnesi.

GetPolicy

Bir kopyası ile ilişkili ilke alır Scheduler nesnesi.

SetDefaultSchedulerPolicy

Varsayılan Zamanlayıcı oluşturduğunda, çalışma için ilke ayarlar.

ResetDefaultSchedulerPolicy

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

Kavramlar

Görev Zamanlayıcı'yı (eşzamanlılık çalışma zamanı)

Zamanlayıcı ilkeleri

Zamanlama grupları