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