Aracılığıyla paylaş


Zamanlayıcı Sınıfı

Eşzamanlılık Çalışma Zamanı zamanlayıcısı için soyutlamayı temsil eder.

Sözdizimi

class Scheduler;

Üyeler

Korumalı Oluşturucular

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ı Sınıfın Scheduler bir nesnesi, tüm dış başvuruları sona erdiğinde örtük olarak yok edilir.

Genel Yöntemler

Veri Akışı Adı Açıklama
Attach Zamanlayıcıyı çağıran bağlama ekler. Bu yöntem döndürdüğünde, çağıran bağlam zamanlayıcı tarafından yönetilir ve zamanlayıcı geçerli zamanlayıcı olur.
Oluştur Davranışı parametresi tarafından _Policy açıklanan yeni bir zamanlayıcı oluşturur, zamanlayıcıya bir ilk başvuru yerleştirir ve buna bir işaretçi döndürür.
CreateScheduleGroup Aşırı yüklendi. 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.
Kimlik 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 parametresinde _Event 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ı azaltma.
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üklendi. Zamanlayıcı içinde hafif bir görev zamanlar. 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, veya ResetDefaultSchedulerPolicy yöntemine SetDefaultSchedulerPolicy bir sonraki geçerli çağrıya kadar etkin kalır.

Açıklamalar

Eşzamanlılık Çalışma Zamanı zamanlayıcı, uygulamanız tarafından kuyruğa alınan çalışmayı yürütmek için iş parçacığı gibi işletim sistemi yürütme bağlamlarıyla 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şler. 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

Zamanlayıcıyı çağıran bağlama ekler. Bu yöntem döndürdüğünde, çağıran bağlam zamanlayıcı tarafından yönetilir ve zamanlayıcı geçerli zamanlayıcı olur.

virtual void Attach() = 0;

Açıklamalar

Zamanlayıcı eklemek, zamanlayıcıya örtük olarak bir başvuru yerleştirir.

Gelecekte bir noktada zamanlayıcının kapanmasına izin vermek için CurrentScheduler::D etach 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.

Bu zamanlayıcı, çağıran bağlamın geçerli zamanlayıcısıysa, bu yöntem improper_scheduler_attach bir özel durum oluşturur.

Oluşturma

Davranışı parametresi tarafından _Policy açıklanan yeni bir zamanlayıcı oluşturur, zamanlayıcıya bir ilk başvuru yerleştirir ve buna 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 nesnenin üzerine yerleştirilmiş bir ilk başvuru sayısı var.

Açıklamalar

yöntemiyle Create bir zamanlayıcı oluşturulduktan sonra, ilk başvuru sayısını kaldırmak ve zamanlayıcının Release kapanmasına izin vermek için gelecekte bir noktada yöntemini çağırmanız gerekir.

Bu yöntemle oluşturulan bir zamanlayıcı, çağıran bağlama 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.

CreateScheduleGroup

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 yürütmeye sapma yapacağı bir konuma başvuru.

Dönüş Değeri

Yeni oluşturulan zamanlama grubuna bir işaretçi. Bu ScheduleGroup nesnenin üzerine yerleştirilmiş bir ilk başvuru sayısı var.

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, başvurularınızı zamanlayıcıda yayınlamadan önce içindeki grupları zamanlamak için tüm başvuruları serbest bırakmanız gerektiğini unutmayın.

GetNumberOfVirtualProcessors

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ı.

IsAvailableLocation

Belirli bir konumun zamanlayıcıda kullanılabilir olup olmadığını belirler.

virtual bool IsAvailableLocation(const location& _Placement) const = 0;

Parametreler

_Yerleştirme
Zamanlayıcının sorgulandığı konuma başvuru.

Dönüş Değeri

Bağımsız değişken tarafından _Placement belirtilen konumun zamanlayıcıda kullanılabilir olup olmadığı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.

Başvuru

Zamanlayıcı başvuru sayısını artırır.

virtual unsigned int Reference() = 0 ;

Dönüş Değeri

Yeni artırılan 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.

Yöntemi çağırmadan Reference önce başvuru sayısı sıfırsa ve çağrı zamanlayıcıya ait olmayan bir bağlamdan yapılıyorsa yöntemi bir improper_scheduler_reference özel durumu oluşturur.

RegisterShutdownEvent

Zamanlayıcı kapandığında ve kendisini yok ettiğinde parametresinde _Event 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ı.

Sürüm

Zamanlayıcı başvuru sayısını azaltma.

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.

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.

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.

Scheduler

sınıfının bir nesnesi Scheduler yalnızca fabrika yöntemleri kullanılarak veya örtük olarak oluşturulabilir.

Scheduler();

Açıklamalar

Çağıran bağlama bir zamanlayıcı eklenmesini gerektiren çalışma zamanı işlevlerinin birçoğunu kullandığınızda, işlemin varsayılan zamanlayıcısı örtük olarak oluşturulur. PPL ve aracı katmanlarının sınıfı ve özellikleri içindeki CurrentScheduler yöntemler genellikle örtük ek gerçekleştirir.

Ayrıca, yöntemi veya Scheduler::Create yöntemi aracılığıyla CurrentScheduler::Create açıkça bir zamanlayıcı oluşturabilirsiniz.

~Zamanlayıcı

Sınıfın Scheduler bir nesnesi, tüm dış başvuruları sona erdiğinde örtük olarak yok edilir.

virtual ~Scheduler();

ScheduleTask

Zamanlayıcı içinde hafif bir görev zamanlar. 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

_Yordam
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
Hafif görevin yürütülmeye karşı önyargılı olacağı bir konuma başvuru.

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, veya ResetDefaultSchedulerPolicy yöntemine SetDefaultSchedulerPolicy 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ı