Zamanlama Grupları
Bu belgede Eşzamanlılık Çalışma Zamanı'nda zamanlama gruplarının rolü açıklanmaktadır. Zamanlama grubu , ilişkili görevleri birlikte birleştirir veya gruplandırır. Her zamanlayıcının bir veya daha fazla zamanlama grubu vardır. Görevler arasında yüksek düzeyde yerelliğe ihtiyacınız olduğunda, örneğin bir grup ilgili görev aynı işlemci düğümünde yürütülmekten yararlandığında zamanlama gruplarını kullanın. Buna karşılık, uygulamanızın belirli kalite gereksinimleri olduğunda( örneğin, bir dizi görev için ayrılan işlem kaynaklarının miktarını sınırlamak istediğinizde) zamanlayıcı örneklerini kullanın. Zamanlayıcı örnekleri hakkında daha fazla bilgi için bkz . Zamanlayıcı Örnekleri.
İpucu
Eşzamanlılık Çalışma Zamanı varsayılan bir zamanlayıcı sağlar ve bu nedenle uygulamanızda bir zamanlayıcı oluşturmanız gerekmez. Görev Zamanlayıcı, uygulamalarınızın performansında ince ayarlamalar yapmanızı sağladığından Eşzamanlılık Çalışma Zamanı'nı kullanmaya yeni başladıysanız Paralel Desenler Kitaplığı (PPL) veya Zaman Uyumsuz Aracılar Kitaplığı ile başlamanızı öneririz.
Her Scheduler
nesnenin her zamanlama düğümü için varsayılan bir zamanlama grubu vardır. Zamanlama düğümü , temel alınan sistem topolojisine eşler. Çalışma zamanı, her işlemci paketi veya Tekdüzen Olmayan Bellek Mimarisi (NUMA) düğümü (hangisi daha büyükse) için bir zamanlama düğümü oluşturur. Bir görevi bir zamanlama grubuyla açıkça ilişkilendirmezseniz, zamanlayıcı görevin ekleneceği grubu seçer.
SchedulingProtocol
Zamanlayıcı ilkesi, zamanlayıcının her zamanlama grubundaki görevleri yürütme sırasını etkiler. SchedulingProtocol
Olarak ayarlandığında EnhanceScheduleGroupLocality
(varsayılandır), Görev Zamanlayıcı geçerli görev tamamlandığında veya işbirliğiyle verildiğinde üzerinde çalıştığı zamanlama grubundan bir sonraki görevi seçer. Görev Zamanlayıcı, bir sonraki kullanılabilir gruba geçmeden önce geçerli zamanlama grubunda iş arar. Buna karşılık, zamanlayıcı olarak ayarlandığındaEnhanceForwardProgress
, SchedulingProtocol
her görev tamamlandıktan veya çıktıktan sonra bir sonraki zamanlama grubuna geçer. Bu ilkeleri karşılaştıran bir örnek için bkz . Nasıl yapılır: Yürütme Sırasını Etkilemek için Zamanlama Gruplarını Kullanma.
Çalışma zamanı, zamanlama gruplarını temsil etmek için eşzamanlılık::ScheduleGroup sınıfını kullanır. Nesne oluşturmak ScheduleGroup
için concurrency::CurrentScheduler::CreateScheduleGroup veya concurrency::Scheduler::CreateScheduleGroup yöntemini çağırın. Çalışma zamanı, nesnelerde olduğu gibi Scheduler
nesnelerin ömrünü ScheduleGroup
denetlemek için bir başvuru sayma mekanizması kullanır. Bir ScheduleGroup
nesne oluşturduğunuzda, çalışma zamanı başvuru sayacını bir olarak ayarlar. Concurrency::ScheduleGroup::Reference yöntemi, başvuru sayacını bir artırır. concurrency::ScheduleGroup::Release yöntemi, başvuru sayacını bir kez azaldırıyor.
Eşzamanlılık Çalışma Zamanı'ndaki birçok tür, bir nesneyi zamanlama grubuyla ilişkilendirmenize olanak tanır. Örneğin eşzamanlılık::aracı sınıfı ve eşzamanlılık::unbounded_buffer, eşzamanlılık::join ve concurrency::timer gibi ileti bloğu sınıfları, oluşturucunun nesne ScheduleGroup
alan aşırı yüklenmiş sürümlerini sağlar. Çalışma zamanı, görevi zamanlamak için bu ScheduleGroup
nesneyle ilişkili nesneyi kullanırScheduler
.
Basit bir görev zamanlamak için eşzamanlılık::ScheduleGroup::ScheduleTask yöntemini de kullanabilirsiniz. Basit görevler hakkında daha fazla bilgi için bkz . Basit Görevler.
Örnek
Görev yürütme sırasını denetlemek için zamanlama gruplarını kullanan bir örnek için bkz . Nasıl yapılır: Yürütme Sırasını Etkilemek için Zamanlama Gruplarını Kullanma.
Ayrıca bkz.
Görev Zamanlayıcı
Zamanlayıcı Örnekleri
Nasıl yapılır: Yürütme Sırasını Etkilemek için Zamanlama Grupları Kullanma