Zamanlayıcı İlkeleri

 

Visual Studio 2017 ile ilgili en son belgeler için bkz. Visual Studio 2017 Belgeleri.

Bu belge eşzamanlılık çalışma zamanı Zamanlayıcı ilkeleri açıklar. A Zamanlayıcı İlkesi Zamanlayıcısı görevleri yönetir, kullandığı stratejisi denetler. Örneğin, bazı görevleri sırasında yürütülecek gerektiren bir uygulama göz önünde THREAD_PRIORITY_NORMAL ve diğer görevleri sırasında yürütmek için THREAD_PRIORITY_HIGHEST. İki Zamanlayıcı örneklerini oluşturabilirsiniz: belirten bir ContextPriority ilkenin THREAD_PRIORITY_NORMAL ve aynı ilkenin belirten başka bir THREAD_PRIORITY_HIGHEST.

Zamanlayıcı ilkelerini kullanarak, geçerli işlem kaynakları ayırmak ve sabit kaynakları her Zamanlayıcı atama. Örneğin, dört işlemci ölçeklenmez paralel bir algoritma göz önünde bulundurun. Sınırlar onun görevleri aynı anda en fazla dört işlemci kullanmak için bir zamanlayıcı ilkesi oluşturabilirsiniz.

System_CAPS_ICON_tip.jpg İpucu

Eşzamanlılık Çalışma zamanı varsayılan Zamanlayıcı sağlar. Bu yüzden, uygulamanızda oluşturmak zorunda değilsiniz. Görev Zamanlayıcı'yı uygulamalarınızın performansını ince ayar yardımcı olacağından ile başlatmanızı öneririz Paralel Desen Kitaplığı (PPL) veya Zaman Uyumsuz Aracılar Kitaplığı Eşzamanlılık Çalışma Zamanı Modülü için yeni iseniz.

Kullandığınızda, concurrency::CurrentScheduler::Create, concurrency::Scheduler::Create, veya concurrency::Scheduler::SetDefaultSchedulerPolicy yöntemi, sağladığınız bir zamanlayıcı oluşumu yaratmak için bir concurrency::SchedulerPolicy Zamanlayıcı davranışlarını belirleyen anahtar-değer çiftleri topluluğu içeren nesne. SchedulerPolicy Yapıcı sayılarda bağımsız değişken alır. İlk bağımsız değişken, yaklaşık belirtmek için ilke öğeleri sayısıdır. Her ilke öğesi için anahtar-değer çiftleri kalan bağımsız değişkenlerdir. Aşağıdaki örnek oluşturur bir SchedulerPolicy üç ilke öğelerini belirten nesne. Çalışma zamanı değil belirtilen ilke anahtarları için varsayılan değerleri kullanır.

No code example is currently available or this language may not be supported.

Concurrency::PolicyElementKey numaralandırma Görev Zamanlayıcısı ile ilişkili ilke anahtarlarını tanımlar. İlke anahtarları ve bunların her biri için çalışma zamanı modülünü kullanan varsayılan değer aşağıdaki tabloda açıklanmaktadır.

İlke anahtarıTanımlamaVarsayılan Değer
SchedulerKindA concurrency::SchedulerType görevleri zamanlamak için kullanılacak iş parçacığı türünü belirten değer.ThreadScheduler(normal iş parçacığı kullanın). Bu anahtar için geçerli olan tek değer budur.
MaxConcurrencyBir unsigned int Zamanlayıcı kullanır eşzamanlılık kaynaklarını en fazla sayısını belirten değer.CONCURRENCY::MaxExecutionResources
MinConcurrencyBir unsigned int en az sayıda Zamanlayıcı kullanır eşzamanlılık kaynakları belirten değer.1
TargetOversubscriptionFactorBir unsigned int her işlem kaynak tahsis etmek için kaç tane iş parçacıkları belirten değer.1
LocalContextCacheSizeBir unsigned int her sanal işlemci Yerel kuyruktaki önbelleğe alınabilir bağlamları en fazla sayısını belirten değer.8
ContextStackSizeBir unsigned int yığın boyutunu kilobayt olarak her içerik için ayrılacak belirten değer.0(varsayılan yığın boyutunu kullanın)
ContextPriorityBir int her içerik iş parçacığının önceliğini belirten değer. Bu geçirmek herhangi bir değer olabilir SetThreadPriority veya INHERIT_THREAD_PRIORITY.THREAD_PRIORITY_NORMAL
SchedulingProtocolA concurrency::SchedulingProtocolType kullanmak için iş planlama çizelgeleme algoritmasının belirten değer.EnhanceScheduleGroupLocality
DynamicProgressFeedbackA concurrency::DynamicProgressFeedbackType istatistik tabanlı ilerleme bilgilerine göre kaynakları amacıyla belirten değer.

 Not Bu ilke ayarlanmamışsa ProgressFeedbackDisabled çalışma zamanı tarafından kullanılmak üzere ayrılmış olduğundan.
ProgressFeedbackEnabled

Görevleri zamanlarken her Zamanlayıcı kendi ilkesini kullanır. Bir Zamanlayıcı ile ilişkili ilkeleri başka bir zamanlayıcı davranışını etkilemez. Ayrıca, oluşturduktan sonra Zamanlayıcı ilke değiştiremezsiniz Scheduler nesne.

System_CAPS_ICON_important.jpg Önemli

Zamanlayıcı ilkeleri yalnızca çalışma zamanı tarafından oluşturulan iş parçacığı özniteliklerini denetlemek için kullanın. İş parçacığının benzeşimi veya tanımsız davranış neden olabilir çünkü, çalışma zamanı tarafından oluşturulan iş parçacıklarının önceliğini değiştirme.

Çalışma zamanı, açıkça bir tane oluşturmazsanız, varsayılan Zamanlayıcı oluşturur. Varsayılan Zamanlayıcısı uygulamada kullanmak istediğiniz ama o Zamanlayıcısı'nı kullanmak için arama için bir ilke belirlemek istediğiniz concurrency::Scheduler::SetDefaultSchedulerPolicy önce paralel iş planlama yöntemi. Arama, Scheduler::SetDefaultSchedulerPolicy yöntemi, varsayılan ilke tablosundan değerleri çalışma zamanı kullanır.

Kullanım concurrency::CurrentScheduler::GetPolicy ve concurrency::Scheduler::GetPolicy Zamanlayıcı İlkesi bir kopyasını almak için yöntem. Bu yöntemlerden aldığınız ilke değerlerini Zamanlayıcı oluşturduğunuzda belirttiğiniz ilke değerlerden farklı olabilir.

Örnek

Zamanlayıcı davranışını denetlemek için belirli Zamanlayıcı ilkeleri kullanma örnekleri incelemek için bkz: Nasıl yapılır: Belirli Zamanlayıcı İlkeleri Belirtme ve Nasıl yapılır: Belirli Zamanlayıcı İlkelerini Kullanan Aracılar Oluşturma.

Ayrıca bkz.

Görev Zamanlayıcısı
Nasıl yapılır: Belirli Zamanlayıcı İlkeleri Belirtme
Nasıl yapılır: Belirli Zamanlayıcı İlkelerini Kullanan Aracılar Oluşturma