Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Eşzamanlılık Çalışma Zamanı zamanlayıcısı için soyutlamayı temsil eder.
Sözdizimi
class Scheduler;
Üyeler
Korumalı Yapıcılar
| Veri Akışı Adı | Açıklama |
|---|---|
| Scheduler | sınıfının bir nesnesi Scheduler yalnızca fabrika yöntemleri kullanılarak veya örtük olarak oluşturulabilir. |
| ~Scheduler Yıkıcısı |
Scheduler sınıfının bir nesnesi, ona olan tüm dış referanslar sona erdiğinde otomatik olarak yok edilir. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| Attach | Çağırma bağlamına zamanlayıcıyı ekler. Bu yöntem döndükten sonra, çağrı bağlamı zamanlayıcı tarafından yönetilir ve zamanlayıcı mevcut zamanlayıcı haline gelir. |
| Oluştur | Davranışı _Policy parametresi tarafından açıklanan yeni bir zamanlayıcı oluşturur, zamanlayıcıya bir ilk referans yerleştirir ve ona bir işaretçi döndürür. |
| CreateScheduleGroup | Aşırı yüklü Zamanlayıcı içinde yeni bir zamanlama grubu oluşturur. parametresini _Placement alan sürüm, yeni oluşturulan zamanlama grubundaki görevlerin bu parametre tarafından belirtilen konumda yürütülmeye karşı taraflı olmasını sağlar. |
| GetNumberOfVirtualProcessors | Zamanlayıcı için geçerli sanal işlemci sayısını döndürür. |
| GetPolicy | Zamanlayıcının oluşturulduğu ilkenin bir kopyasını döndürür. |
| ID | Zamanlayıcı için benzersiz bir tanımlayıcı döndürür. |
| IsAvailableLocation | Belirli bir konumun zamanlayıcıda kullanılabilir olup olmadığını belirler. |
| Başvuru | Zamanlayıcı başvuru sayısını artırır. |
| RegisterShutdownEvent | Zamanlayıcı kapandığında ve kendisini yok ettiğinde, _Event parametresinde geçirilen Windows olay tanıtıcısının sinyal vermesine neden olur. Olay sinyallendiğinde zamanlayıcıya zamanlanmış olan tüm çalışmalar tamamlanır. Bu yöntemle birden çok kapatma olayı kaydedilebilir. |
| Sürüm | Zamanlayıcı başvuru sayısını azaltır. |
| ResetDefaultSchedulerPolicy | Varsayılan zamanlayıcı ilkesini çalışma zamanı varsayılanı olarak sıfırlar. Bir sonraki varsayılan zamanlayıcı oluşturulduğunda, çalışma zamanı varsayılan ilke ayarlarını kullanır. |
| ScheduleTask | Aşırı yüklü Zamanlayıcıda hafif yüklü bir görev zamanlanır. Hafif görev, çalışma zamanı tarafından belirlenen bir zamanlama grubuna yerleştirilir. parametresini _Placement alan sürüm, görevin belirtilen konumda yürütülmeye yönelik sapmaya neden olur. |
| SetDefaultSchedulerPolicy | Kullanıcı tanımlı bir ilkenin varsayılan zamanlayıcıyı oluşturmak için kullanılmasına izin verir. Bu yöntem yalnızca işlem içinde varsayılan zamanlayıcı mevcut olmadığında çağrılabilir. Varsayılan ilke ayarlandıktan sonra, SetDefaultSchedulerPolicy veya ResetDefaultSchedulerPolicy yöntemine yapılacak bir sonraki geçerli çağrıya kadar etkin kalır. |
Açıklamalar
Eşzamanlılık Çalışma Zamanı zamanlayıcısı, uygulamanız tarafından kuyruğa alınan işleri yürütmek için iş parçacığı gibi işletim sisteminin yürütme bağlamlarına eşlenen yürütme bağlamlarını kullanır. Herhangi bir zamanda, bir zamanlayıcının eşzamanlılık düzeyi Resource Manager tarafından kendisine verilen sanal işlemci sayısına eşittir. Sanal işlemci, bir işleme kaynağına yönelik bir soyutlamadır ve temel alınan sistemdeki bir donanım iş parçacığıyla eşleşir. Belirli bir zamanda sanal işlemcide yalnızca tek bir zamanlayıcı bağlamı yürütülebilir.
Eşzamanlılık Çalışma Zamanı, paralel çalışma yürütmek için işlem başına varsayılan bir zamanlayıcı oluşturur. Ayrıca kendi zamanlayıcı örneklerinizi oluşturabilir ve bu sınıfı kullanarak işleyebilirsiniz.
Devralma Hiyerarşisi
Scheduler
Gereksinimler
Üst bilgi: concrt.h
Ad alanı: eşzamanlılık
İliştir
Çağırma bağlamına zamanlayıcıyı ekler. Bu yöntem döndükten sonra, çağrı bağlamı zamanlayıcı tarafından yönetilir ve zamanlayıcı mevcut zamanlayıcı haline gelir.
virtual void Attach() = 0;
Açıklamalar
Zamanlayıcı eklemek, zamanlayıcıya dolaylı olarak bir referans yerleştirir.
İleride zamanlayıcının kapanmasına izin vermek için CurrentScheduler::Detach yöntemini çağırmanız gerekir.
Bu yöntem zaten farklı bir zamanlayıcıya eklenmiş bir bağlamdan çağrılırsa, var olan zamanlayıcı önceki zamanlayıcı olarak anımsanır ve yeni oluşturulan zamanlayıcı geçerli zamanlayıcı olur. Yöntemini daha sonraki bir noktada çağırdığınızda CurrentScheduler::Detach , önceki zamanlayıcı geçerli zamanlayıcı olarak geri yüklenir.
Eğer bu zamanlayıcı, çağıran bağlamın geçerli zamanlayıcısı ise, bu yöntem bir improper_scheduler_attach özel durumu atar.
Oluşturma
Davranışı _Policy parametresi tarafından açıklanan yeni bir zamanlayıcı oluşturur, zamanlayıcıya bir ilk referans yerleştirir ve ona bir işaretçi döndürür.
static Scheduler* __cdecl Create(const SchedulerPolicy& _Policy);
Parametreler
_Politika
Yeni oluşturulan zamanlayıcının davranışını açıklayan zamanlayıcı ilkesi.
Dönüş Değeri
Yeni oluşturulan bir zamanlayıcının işaretçisi. Bu Scheduler nesne üzerinde bir başlangıç referans sayısı bulunmaktadır.
Açıklamalar
Create yöntemiyle bir zamanlayıcı oluşturulduktan sonra, ilk başvuru sayısını kaldırmak ve zamanlayıcının kapanmasına izin vermek için Release yöntemini gelecekte bir noktada çağırmanız gerekir.
Bu yöntemle oluşturulan bir zamanlayıcı, çağıran bağlama ortamına eklenmez. Attach yöntemi kullanılarak bir bağlama eklenebilir.
Bu yöntem, scheduler_resource_allocation_error ve invalid_scheduler_policy_value gibi çeşitli özel durumlar oluşturabilir.
ProgramGrubuOluştur
Zamanlayıcı içinde yeni bir zamanlama grubu oluşturur. parametresini _Placement alan sürüm, yeni oluşturulan zamanlama grubundaki görevlerin bu parametre tarafından belirtilen konumda yürütülmeye karşı taraflı olmasını sağlar.
virtual ScheduleGroup* CreateScheduleGroup() = 0;
virtual ScheduleGroup* CreateScheduleGroup(location& _Placement) = 0;
Parametreler
_Yerleştirme
Zamanlama grubundaki görevlerin ağırlıklı olarak yürütüleceği bir konuma referans.
Dönüş Değeri
Yeni oluşturulan zamanlama grubuna bir işaretçi. Bu ScheduleGroup nesne üzerinde bir başlangıç referans sayısı bulunmaktadır.
Açıklamalar
Üzerinde çalışmayı zamanlama işlemini tamamladığınızda Release yöntemini bir zamanlama grubunda çağırmanız gerekir. Zamanlayıcı, kuyruğa alınan tüm çalışmalar tamamlandığında zamanlama grubunu yok eder.
Bu zamanlayıcıyı açıkça oluşturduysanız, zamanlayıcıyla ilgili referanslarınızı serbest bırakmadan önce, içindeki programlama gruplarına ait tüm referansları serbest bırakmanız gerektiğini not edin.
SanalİşlemciSayısınıAl
Zamanlayıcı için geçerli sanal işlemci sayısını döndürür.
virtual unsigned int GetNumberOfVirtualProcessors() const = 0;
Dönüş Değeri
Zamanlayıcı için geçerli sanal işlemci sayısı.
GetPolicy
Zamanlayıcının oluşturulduğu ilkenin bir kopyasını döndürür.
virtual SchedulerPolicy GetPolicy() const = 0;
Dönüş Değeri
Zamanlayıcının oluşturulduğu ilkenin bir kopyası.
Id
Zamanlayıcı için benzersiz bir tanımlayıcı döndürür.
virtual unsigned int Id() const = 0;
Dönüş Değeri
Zamanlayıcı için benzersiz bir tanımlayıcı.
MevcutKonumMu
Belirli bir konumun zamanlayıcıda kullanılabilir olup olmadığını belirler.
virtual bool IsAvailableLocation(const location& _Placement) const = 0;
Parametreler
_Yerleştirme
Sorgulamak üzere zamanlayıcıya danışılacak konuma referans.
Dönüş Değeri
_Placement bağımsız değişkeni tarafından belirtilen konumun zamanlayıcıda kullanılıp kullanılmadığını gösteren bir gösterge.
Açıklamalar
Dönüş değerinin, verilen konumun kullanılabilir olup olmadığını gösteren anlık bir örnekleme olduğunu unutmayın. Birden çok zamanlayıcının varlığında, dinamik kaynak yönetimi herhangi bir noktada zamanlayıcılara kaynak ekleyebilir veya kaynaklardan kaynak alabilir. Bu durumda, belirtilen konum kullanılabilirliği değiştirebilir.
Referans
Zamanlayıcı başvuru sayısını artırır.
virtual unsigned int Reference() = 0 ;
Dönüş Değeri
Artırılmış yeni referans sayısı.
Açıklamalar
Bu genellikle yapılandırma zamanlayıcısının ömrünü yönetmek için kullanılır. Bir zamanlayıcının başvuru sayısı sıfıra düştüğünde zamanlayıcı kapatılır ve zamanlayıcı üzerindeki tüm çalışmalar tamamlandıktan sonra kendini yok eder.
Yöntem, Reference çağrısı yapılmadan önce başvuru sayısı sıfırsa ve çağrı, zamanlayıcıya ait olmayan bir bağlamdan yapılıyorsa, bir improper_scheduler_reference özel durumu oluşturur.
KapatmaOlayıKaydet
Zamanlayıcı kapandığında ve kendisini yok ettiğinde, _Event parametresinde geçirilen Windows olay tanıtıcısının sinyal vermesine neden olur. Olay sinyallendiğinde zamanlayıcıya zamanlanmış olan tüm çalışmalar tamamlanır. Bu yöntemle birden çok kapatma olayı kaydedilebilir.
virtual void RegisterShutdownEvent(HANDLE _Event) = 0;
Parametreler
_Olay
Zamanlayıcı kapandığında ve kendisini yok ettiğinde çalışma zamanı tarafından sinyal verilecek bir Windows olay nesnesinin tanıtıcısı.
Yayınlama
Zamanlayıcı başvuru sayısını azaltır.
virtual unsigned int Release() = 0;
Dönüş Değeri
Yeni azalan başvuru sayısı.
Açıklamalar
Bu genellikle zamanlayıcının oluşturma ömrünü yönetmek için kullanılır. Bir zamanlayıcının başvuru sayısı sıfıra düştüğünde zamanlayıcı kapatılır ve zamanlayıcı üzerindeki tüm çalışmalar tamamlandıktan sonra kendini yok eder.
VarsayılanZamanlayıcıPolitikasınıSıfırla
Varsayılan zamanlayıcı ilkesini çalışma zamanı varsayılanı olarak sıfırlar. Bir sonraki varsayılan zamanlayıcı oluşturulduğunda, çalışma zamanı varsayılan ilke ayarlarını kullanır.
static void __cdecl ResetDefaultSchedulerPolicy();
Açıklamalar
Bu yöntem, işlem içinde varsayılan bir zamanlayıcı varken çağrılabilir. Mevcut varsayılan zamanlayıcının ilkesini etkilemez. Ancak, varsayılan zamanlayıcı kapatılacaksa ve daha sonraki bir noktada yeni bir varsayılan oluşturulacaksa, yeni zamanlayıcı çalışma zamanı varsayılan ilke ayarlarını kullanır.
Zamanlayıcı
sınıfının bir nesnesi Scheduler yalnızca fabrika yöntemleri kullanılarak veya örtük olarak oluşturulabilir.
Scheduler();
Açıklamalar
Çalışma zamanı işlevlerinden çağırma bağlamına bir zamanlayıcı eklenmesini gerektiren birçok işlevi kullandığınızda, işlemin varsayılan zamanlayıcısı otomatik olarak oluşturulur. PPL ve aracı katmanların özellikleri ile CurrentScheduler sınıfındaki yöntemler genellikle örtük bağlama gerçekleştirir.
Ayrıca CurrentScheduler::Create veya Scheduler::Create yöntemi aracılığıyla açıkça bir zamanlayıcı oluşturabilirsiniz.
~Zamanlayıcı
Scheduler sınıfının bir nesnesi, ona olan tüm dış referanslar sona erdiğinde otomatik olarak yok edilir.
virtual ~Scheduler();
Görev Planla
Zamanlayıcıda hafif yüklü bir görev zamanlanır. Hafif görev, çalışma zamanı tarafından belirlenen bir zamanlama grubuna yerleştirilir. parametresini _Placement alan sürüm, görevin belirtilen konumda yürütülmeye yönelik sapmaya neden olur.
virtual void ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data) = 0;
virtual void ScheduleTask(
TaskProc _Proc,
_Inout_opt_ void* _Data,
location& _Placement) = 0;
Parametreler
_Prosedür
Basit görevin gövdesini gerçekleştirmek için yürütülecek işlev işaretçisi.
_Veri
Görevin gövdesine parametre olarak geçirilecek verilere ilişkin geçersiz bir işaretçi.
_Yerleştirme
Bir hafif yük görevinin yürütülmeye eğilimli olacağı bir konuma referans.
SetDefaultSchedulerPolicy
Kullanıcı tanımlı bir ilkenin varsayılan zamanlayıcıyı oluşturmak için kullanılmasına izin verir. Bu yöntem yalnızca işlem içinde varsayılan zamanlayıcı mevcut olmadığında çağrılabilir. Varsayılan ilke ayarlandıktan sonra, SetDefaultSchedulerPolicy veya ResetDefaultSchedulerPolicy yöntemine yapılacak bir sonraki geçerli çağrıya kadar etkin kalır.
static void __cdecl SetDefaultSchedulerPolicy(const SchedulerPolicy& _Policy);
Parametreler
_Politika
Varsayılan zamanlayıcı ilkesi olarak ayarlanacak ilke.
Açıklamalar
SetDefaultSchedulerPolicy yöntem, işlem içinde varsayılan bir zamanlayıcı zaten mevcut olduğunda çağrılırsa, çalışma zamanı bir default_scheduler_exists özel durumu oluşturur.
Ayrıca bkz.
Eşzamanlılık Ad Alanı
Zamanlayıcı Sınıfı
PolicyElementKey
Görev Zamanlayıcı