CurrentScheduler Sınıfı

Çağırma bağlamıyla ilişkili mevcut zamanlayıcıya yönelik bir soyutlamayı temsil eder.

Sözdizimi

class CurrentScheduler;

Üyeler

Genel Yöntemler

Veri Akışı Adı Açıklama
Oluştur Davranışı parametresi tarafından _Policy açıklanan yeni bir zamanlayıcı oluşturur ve bunu çağıran bağlama ekler. Yeni oluşturulan zamanlayıcı, arama bağlamı için geçerli zamanlayıcı olur.
CreateScheduleGroup Aşırı yüklü Çağıran bağlamla ilişkili 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.
Detach Geçerli zamanlayıcıyı arama bağlamından ayırır ve varsa, önceden eklenmiş zamanlayıcıyı geçerli zamanlayıcı olarak geri yükler. Bu yöntem döndükten sonra, çağrı bağlamı daha önce CurrentScheduler::Create veya Scheduler::Attach yöntemi kullanılarak bağlama eklenen zamanlayıcı tarafından yönetilir.
Edinin Çağrı bağlamı ile ilişkilendirilmiş, mevcut zamanlayıcı olarak da adlandırılan zamanlayıcıya bir işaretçi döndürür.
GetNumberOfVirtualProcessors Çağıran bağlamla ilişkilendirilmiş zamanlayıcı için geçerli sanal işlemci sayısını döndürür.
GetPolicy Geçerli zamanlayıcının oluşturulduğu ilkenin bir kopyasını döndürür.
ID Geçerli zamanlayıcı için benzersiz bir tanımlayıcı döndürür.
IsAvailableLocation Belirli bir konumun geçerli zamanlayıcıda kullanılabilir olup olmadığını belirler.
RegisterShutdownEvent Geçerli bağlamla ilişkili zamanlayıcı kapandığında ve kendi kendini yok ettiğinde parametresinde _ShutdownEvent geçirilen Windows olay tanıtıcısının sinyal gönderilmesine neden olur. Olay sinyallendiğinde zamanlayıcıya zamanlanmış olan tüm çalışmalar tamamlanır. Bu yöntemle birden çok kapatma olayı kaydedilebilir.
ScheduleTask Aşırı yüklü Çağıran bağlamla ilişkili 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.

Açıklamalar

Çağıran bağlamla ilişkilendirilmiş bir zamanlayıcı yoksa (bkz . Zamanlayıcı), sınıfındaki CurrentScheduler birçok yöntem işlemin varsayılan zamanlayıcısının eklendiğine neden olur. Bu, işlemin varsayılan zamanlayıcısının böyle bir çağrı sırasında oluşturulduğunu da ifade edebilir.

Devralma Hiyerarşisi

CurrentScheduler

Gereksinimler

Üst bilgi: concrt.h

Ad alanı: eşzamanlılık

Oluşturma

_Policy parametresiyle açıklanan bir zamanlayıcı oluşturur ve bunu çağrı bağlamına ekler. Yeni oluşturulan zamanlayıcı, arama bağlamı için geçerli zamanlayıcı olur.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parametreler

_Politika
Yeni oluşturulan zamanlayıcının davranışını açıklayan zamanlayıcı ilkesi.

Açıklamalar

Zamanlayıcının çağrı bağlamına eklenmesi, zamanlayıcıya otomatik olarak bir başvuru sayısı ekler.

Create yöntemi ile bir zamanlayıcı oluşturduktan sonra, zamanlayıcının kapanmasına olanak sağlamak için gelecekte bir noktada 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.

Bu yöntem, scheduler_resource_allocation_error ve invalid_scheduler_policy_value gibi çeşitli özel durumlar oluşturabilir.

ProgramGrubuOluştur

Çağıran bağlamla ilişkili 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.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parametreler

_Yerleştirme
Zamanlama grubundaki görevlerin yürütülmeye eğilimli olacağı konuma bir 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

Bu yöntem, şu anda çağrı bağlamıyla ilişkilendirilmiş bir zamanlayıcı yoksa, işlemin varsayılan zamanlayıcısının oluşturulmasına ve/veya çağrı bağlamlarına eklenmesine neden olur.

Ü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, geçerli bağlamı ondan ayırarak referansınızı zamanlayıcıdan bırakmadan önce, içindeki tüm zamanlama grubu referanslarını bırakmanız gerektiğini unutmayın.

Bağlantıyı Kes

Geçerli zamanlayıcıyı arama bağlamından ayırır ve varsa, önceden eklenmiş zamanlayıcıyı geçerli zamanlayıcı olarak geri yükler. Bu yöntem döndükten sonra, çağrı bağlamı daha önce CurrentScheduler::Create veya Scheduler::Attach yöntemi kullanılarak bağlama eklenen zamanlayıcı tarafından yönetilir.

static void __cdecl Detach();

Açıklamalar

Detach yöntemi, bir başvuru sayısını zamanlayıcıdan örtük olarak kaldırır.

Çağrı yapılan bağlama bir zamanlayıcı eklenmemişse, bu yöntemin çağrılması bir scheduler_not_attached özel durumu atılmasına neden olur.

Bu yöntemin, bir zamanlayıcı tarafından içsel olarak ve yönetilen bir bağlamdan veya Scheduler::Attach veya CurrentScheduler::Create yöntemleri dışında bir yöntemle eklenmiş bir bağlamdan çağrılması, bir improper_scheduler_detach özel durumu oluşturulmasına neden olacaktır.

Al

Çağrı bağlamı ile ilişkilendirilmiş, mevcut zamanlayıcı olarak da adlandırılan zamanlayıcıya bir işaretçi döndürür.

static Scheduler* __cdecl Get();

Dönüş Değeri

Çağıran bağlamla (geçerli zamanlayıcı) ilişkili zamanlayıcı işaretçisi.

Açıklamalar

Bu yöntem, şu anda çağrı bağlamıyla ilişkilendirilmiş bir zamanlayıcı yoksa, işlemin varsayılan zamanlayıcısının oluşturulmasına ve/veya çağrı bağlamlarına eklenmesine neden olur. Bu yöntem tarafından döndürülen Scheduler nesnesine ek bir başvuru yapılmamıştır.

SanalİşlemciSayısınıAl

Çağıran bağlamla ilişkilendirilmiş zamanlayıcı için geçerli sanal işlemci sayısını döndürür.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Dönüş Değeri

Bir zamanlayıcı, çağıran bağlamla ilişkiliyse, söz konusu zamanlayıcı için geçerli sanal işlemci sayısı; aksi takdirde değeridir -1.

Açıklamalar

Çağıran bağlam zaten bir zamanlayıcıyla ilişkilendirilmemişse bu yöntem zamanlayıcı eki ile sonuçlanmaz.

Bu yöntemden döndürülen değer, çağıran bağlamla ilişkili zamanlayıcı için sanal işlemci sayısının anlık örneklemesidir. Bu değer döndürülürken eski olabilir.

GetPolicy

Geçerli zamanlayıcının oluşturulduğu ilkenin bir kopyasını döndürür.

static SchedulerPolicy __cdecl GetPolicy();

Dönüş Değeri

Mevcut zamanlayıcının oluşturulduğu politikanın bir kopyası.

Açıklamalar

Bu yöntem, şu anda çağrı bağlamıyla ilişkilendirilmiş bir zamanlayıcı yoksa, işlemin varsayılan zamanlayıcısının oluşturulmasına ve/veya çağrı bağlamlarına eklenmesine neden olur.

Id

Geçerli zamanlayıcı için benzersiz bir tanımlayıcı döndürür.

static unsigned int __cdecl Id();

Dönüş Değeri

Bir zamanlayıcı arama bağlamı ile ilişkiliyse, söz konusu zamanlayıcı için benzersiz bir tanımlayıcı; aksi takdirde değeridir -1.

Açıklamalar

Çağıran bağlam zaten bir zamanlayıcıyla ilişkilendirilmemişse bu yöntem zamanlayıcı eki ile sonuçlanmaz.

MevcutKonumMu

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

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parametreler

_Yerleştirme
Geçerli zamanlayıcının sorgulandığı konuma başvuru.

Dönüş Değeri

_Placement bağımsız değişkeni tarafından belirtilen konumun mevcut zamanlayıcıda kullanılabilir olup olmadığını gösterir.

Açıklamalar

Çağıran bağlam zaten bir zamanlayıcıyla ilişkilendirilmemişse bu yöntem zamanlayıcı eki ile sonuçlanmaz.

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.

KapatmaOlayıKaydet

Geçerli bağlamla ilişkili zamanlayıcı kapandığında ve kendi kendini yok ettiğinde parametresinde _ShutdownEvent geçirilen Windows olay tanıtıcısının sinyal gönderilmesine neden olur. Olay sinyallendiğinde zamanlayıcıya zamanlanmış olan tüm çalışmalar tamamlanır. Bu yöntemle birden çok kapatma olayı kaydedilebilir.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parametreler

_ShutdownEvent (Kapatma Olayı)
Geçerli bağlamla ilişkili zamanlayıcı kapandığında ve kendisini yok ettiğinde çalışma zamanı tarafından sinyal verilecek bir Windows olay nesnesinin tanıtıcısı.

Açıklamalar

Çağrı yapılan bağlama bir zamanlayıcı eklenmemişse, bu yöntemin çağrılması bir scheduler_not_attached özel durumu atılmasına neden olur.

Görev Planla

Çağıran bağlamla ilişkili 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.

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data);

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data,
    location& _Placement);

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.

Açıklamalar

Bu yöntem, şu anda çağrı bağlamıyla ilişkilendirilmiş bir zamanlayıcı yoksa, işlemin varsayılan zamanlayıcısının oluşturulmasına ve/veya çağrı bağlamlarına eklenmesine neden olur.

Ayrıca bkz.

Eşzamanlılık Ad Alanı
Zamanlayıcı Sınıfı
PolicyElementKey
Görev Zamanlayıcı