Kelas Penjadwal

Mewakili abstraksi untuk penjadwal Runtime Konkurensi.

Sintaks

class Scheduler;

Anggota

Konstruktor yang Dilindungi

Nama Deskripsi
Scheduler Objek Scheduler kelas hanya dapat dibuat menggunakan metode pabrik, atau secara implisit.
~Destruktor Penjadwal Objek Scheduler kelas secara implisit dihancurkan ketika semua referensi eksternal berhenti ada.

Metode Publik

Nama Deskripsi
Melampirkan Melampirkan penjadwal ke konteks panggilan. Setelah metode ini kembali, konteks panggilan dikelola oleh penjadwal dan penjadwal menjadi penjadwal saat ini.
Buat Membuat penjadwal baru yang perilakunya dijelaskan oleh _Policy parameter, menempatkan referensi awal pada penjadwal, dan mengembalikan penunjuk ke sana.
CreateScheduleGroup Kelebihan beban. Membuat grup jadwal baru dalam penjadwal. Versi yang mengambil parameter _Placement menyebabkan tugas dalam grup jadwal yang baru dibuat menjadi bias untuk dieksekusi di lokasi yang ditentukan oleh parameter tersebut.
GetNumberOfVirtualProcessors Mengembalikan jumlah prosesor virtual saat ini untuk penjadwal.
GetPolicy Mengembalikan salinan kebijakan yang dibuat oleh penjadwal.
Id Mengembalikan pengidentifikasi unik untuk penjadwal.
IsAvailableLocation Menentukan apakah lokasi tertentu tersedia pada penjadwal.
Referensi Menaikkan jumlah referensi penjadwal.
RegisterShutdownEvent Menyebabkan handel peristiwa Windows yang diteruskan dalam _Event parameter diberi sinyal ketika penjadwal dimatikan dan menghancurkan dirinya sendiri. Pada saat acara disinyalir, semua pekerjaan yang telah dijadwalkan ke penjadwal selesai. Beberapa peristiwa matikan dapat didaftarkan melalui metode ini.
Rilis Mengurangi jumlah referensi penjadwal.
ResetDefaultSchedulerPolicy Mengatur ulang kebijakan penjadwal default ke default runtime. Saat berikutnya penjadwal default dibuat, penjadwal akan menggunakan pengaturan kebijakan default runtime.
ScheduleTask Kelebihan beban. Menjadwalkan tugas ringan dalam penjadwal. Tugas ringan akan ditempatkan dalam grup jadwal yang ditentukan oleh runtime. Versi yang mengambil parameter _Placement menyebabkan tugas menjadi bias untuk dieksekusi di lokasi yang ditentukan.
SetDefaultSchedulerPolicy Memungkinkan kebijakan yang ditentukan pengguna digunakan untuk membuat penjadwal default. Metode ini hanya dapat dipanggil ketika tidak ada penjadwal default dalam proses. Setelah kebijakan default ditetapkan, kebijakan tersebut tetap berlaku hingga panggilan valid berikutnya ke SetDefaultSchedulerPolicy metode ResetDefaultSchedulerPolicy.

Keterangan

Penjadwal Runtime Konkurensi menggunakan konteks eksekusi, yang memetakan ke konteks eksekusi sistem operasi, seperti utas, untuk menjalankan pekerjaan yang diantrekan oleh aplikasi Anda. Kapan saja, tingkat konkurensi penjadwal sama dengan jumlah prosesor virtual yang diberikan oleh Resource Manager. Prosesor virtual adalah abstraksi untuk sumber daya pemrosesan dan peta ke utas perangkat keras pada sistem yang mendasar. Hanya konteks penjadwal tunggal yang dapat dijalankan pada prosesor virtual pada waktu tertentu.

Runtime Konkurensi akan membuat penjadwal default per proses untuk menjalankan pekerjaan paralel. Selain itu, Anda dapat membuat instans penjadwal Anda sendiri dan memanipulasinya menggunakan kelas ini.

Hierarki Warisan

Scheduler

Persyaratan

Header: concrt.h

Namespace: konkurensi

Lampirkan

Melampirkan penjadwal ke konteks panggilan. Setelah metode ini kembali, konteks panggilan dikelola oleh penjadwal dan penjadwal menjadi penjadwal saat ini.

virtual void Attach() = 0;

Keterangan

Melampirkan penjadwal secara implisit menempatkan referensi pada penjadwal.

Pada titik tertentu di masa mendatang, Anda harus memanggil metode CurrentScheduler::D etach untuk memungkinkan penjadwal dimatikan.

Jika metode ini dipanggil dari konteks yang sudah dilampirkan ke penjadwal yang berbeda, penjadwal yang ada diingat sebagai penjadwal sebelumnya, dan penjadwal yang baru dibuat menjadi penjadwal saat ini. Ketika Anda memanggil metode di CurrentScheduler::Detach titik selanjutnya, penjadwal sebelumnya dipulihkan sebagai penjadwal saat ini.

Metode ini akan memberikan pengecualian improper_scheduler_attach jika penjadwal ini adalah penjadwal saat ini dari konteks panggilan.

Buat

Membuat penjadwal baru yang perilakunya dijelaskan oleh _Policy parameter, menempatkan referensi awal pada penjadwal, dan mengembalikan penunjuk ke sana.

static Scheduler* __cdecl Create(const SchedulerPolicy& _Policy);

Parameter

_Kebijakan
Kebijakan penjadwal yang menjelaskan perilaku penjadwal yang baru dibuat.

Tampilkan Nilai

Penunjuk ke penjadwal yang baru dibuat. Objek ini Scheduler memiliki jumlah referensi awal yang ditempatkan di atasnya.

Keterangan

Setelah penjadwal dibuat dengan Create metode , Anda harus memanggil Release metode di beberapa titik di masa mendatang untuk menghapus jumlah referensi awal dan memungkinkan penjadwal dimatikan.

Penjadwal yang dibuat dengan metode ini tidak dilampirkan ke konteks panggilan. Ini dapat dilampirkan ke konteks menggunakan metode Lampirkan.

Metode ini dapat melemparkan berbagai pengecualian, termasuk scheduler_resource_allocation_error dan invalid_scheduler_policy_value.

CreateScheduleGroup

Membuat grup jadwal baru dalam penjadwal. Versi yang mengambil parameter _Placement menyebabkan tugas dalam grup jadwal yang baru dibuat menjadi bias untuk dieksekusi di lokasi yang ditentukan oleh parameter tersebut.

virtual ScheduleGroup* CreateScheduleGroup() = 0;

virtual ScheduleGroup* CreateScheduleGroup(location& _Placement) = 0;

Parameter

_Penempatan
Referensi ke lokasi tempat tugas dalam grup jadwal akan bias untuk dieksekusi.

Tampilkan Nilai

Penunjuk ke grup jadwal yang baru dibuat. Objek ini ScheduleGroup memiliki jumlah referensi awal yang ditempatkan di atasnya.

Keterangan

Anda harus memanggil metode Rilis pada grup jadwal ketika Anda selesai menjadwalkan pekerjaan untuk itu. Penjadwal akan menghancurkan grup jadwal ketika semua pekerjaan yang diantrekan ke dalamnya telah selesai.

Perhatikan bahwa jika Anda secara eksplisit membuat penjadwal ini, Anda harus merilis semua referensi untuk menjadwalkan grup di dalamnya, sebelum merilis referensi Anda pada penjadwal.

GetNumberOfVirtualProcessors

Mengembalikan jumlah prosesor virtual saat ini untuk penjadwal.

virtual unsigned int GetNumberOfVirtualProcessors() const = 0;

Tampilkan Nilai

Jumlah prosesor virtual saat ini untuk penjadwal.

GetPolicy

Mengembalikan salinan kebijakan yang dibuat oleh penjadwal.

virtual SchedulerPolicy GetPolicy() const = 0;

Tampilkan Nilai

Salinan kebijakan tempat penjadwal dibuat.

Id

Mengembalikan pengidentifikasi unik untuk penjadwal.

virtual unsigned int Id() const = 0;

Tampilkan Nilai

Pengidentifikasi unik untuk penjadwal.

IsAvailableLocation

Menentukan apakah lokasi tertentu tersedia pada penjadwal.

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

Parameter

_Penempatan
Referensi ke lokasi untuk mengkueri penjadwal.

Tampilkan Nilai

Indikasi apakah lokasi yang ditentukan oleh _Placement argumen tersedia pada penjadwal atau tidak.

Keterangan

Perhatikan bahwa nilai pengembalian adalah pengambilan sampel seketika dari apakah lokasi yang diberikan tersedia. Di hadapan beberapa penjadwal, manajemen sumber daya dinamis dapat menambahkan atau mengambil sumber daya dari penjadwal kapan saja. Jika ini terjadi, lokasi yang diberikan dapat mengubah ketersediaan.

Referensi

Menaikkan jumlah referensi penjadwal.

virtual unsigned int Reference() = 0 ;

Tampilkan Nilai

Jumlah referensi yang baru bertambah.

Keterangan

Ini biasanya digunakan untuk mengelola masa pakai penjadwal untuk komposisi. Ketika jumlah referensi penjadwal jatuh ke nol, penjadwal akan mematikan dan merusak dirinya sendiri setelah semua pekerjaan pada penjadwal selesai.

Metode ini akan melemparkan pengecualian improper_scheduler_reference jika jumlah referensi sebelum memanggil Reference metode adalah nol dan panggilan dilakukan dari konteks yang tidak dimiliki oleh penjadwal.

RegisterShutdownEvent

Menyebabkan handel peristiwa Windows yang diteruskan dalam _Event parameter diberi sinyal ketika penjadwal dimatikan dan menghancurkan dirinya sendiri. Pada saat acara disinyalir, semua pekerjaan yang telah dijadwalkan ke penjadwal selesai. Beberapa peristiwa matikan dapat didaftarkan melalui metode ini.

virtual void RegisterShutdownEvent(HANDLE _Event) = 0;

Parameter

_Acara
Handel ke objek peristiwa Windows yang akan disinyalir oleh runtime ketika penjadwal dimatikan dan menghancurkan dirinya sendiri.

Lepaskan

Mengurangi jumlah referensi penjadwal.

virtual unsigned int Release() = 0;

Tampilkan Nilai

Jumlah referensi yang baru direkrementasi.

Keterangan

Ini biasanya digunakan untuk mengelola masa pakai penjadwal untuk komposisi. Ketika jumlah referensi penjadwal jatuh ke nol, penjadwal akan mematikan dan merusak dirinya sendiri setelah semua pekerjaan pada penjadwal selesai.

ResetDefaultSchedulerPolicy

Mengatur ulang kebijakan penjadwal default ke default runtime. Saat berikutnya penjadwal default dibuat, penjadwal akan menggunakan pengaturan kebijakan default runtime.

static void __cdecl ResetDefaultSchedulerPolicy();

Keterangan

Metode ini dapat dipanggil saat penjadwal default ada dalam proses. Ini tidak akan memengaruhi kebijakan penjadwal default yang ada. Namun, jika penjadwal default dimatikan, dan default baru akan dibuat di titik selanjutnya, penjadwal baru akan menggunakan pengaturan kebijakan default runtime.

Scheduler

Objek Scheduler kelas hanya dapat dibuat menggunakan metode pabrik, atau secara implisit.

Scheduler();

Keterangan

Penjadwal default proses dibuat secara implisit ketika Anda menggunakan banyak fungsi runtime yang mengharuskan penjadwal dilampirkan ke konteks panggilan. Metode dalam CurrentScheduler kelas dan fitur lapisan PPL dan agen biasanya melakukan lampiran implisit.

Anda juga dapat membuat penjadwal secara eksplisit melalui CurrentScheduler::Create metode atau Scheduler::Create metode .

~Scheduler

Objek Scheduler kelas secara implisit dihancurkan ketika semua referensi eksternal berhenti ada.

virtual ~Scheduler();

ScheduleTask

Menjadwalkan tugas ringan dalam penjadwal. Tugas ringan akan ditempatkan dalam grup jadwal yang ditentukan oleh runtime. Versi yang mengambil parameter _Placement menyebabkan tugas menjadi bias untuk dieksekusi di lokasi yang ditentukan.

virtual void ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data) = 0;

virtual void ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data,
    location& _Placement) = 0;

Parameter

_Proc
Penunjuk ke fungsi untuk dijalankan untuk melakukan isi tugas ringan.

_Data
Penunjuk ke data yang akan diteruskan sebagai parameter ke isi tugas.

_Penempatan
Referensi ke lokasi di mana tugas ringan akan bias terhadap eksekusi.

SetDefaultSchedulerPolicy

Memungkinkan kebijakan yang ditentukan pengguna digunakan untuk membuat penjadwal default. Metode ini hanya dapat dipanggil ketika tidak ada penjadwal default dalam proses. Setelah kebijakan default ditetapkan, kebijakan tersebut tetap berlaku hingga panggilan valid berikutnya ke SetDefaultSchedulerPolicy metode ResetDefaultSchedulerPolicy.

static void __cdecl SetDefaultSchedulerPolicy(const SchedulerPolicy& _Policy);

Parameter

_Kebijakan
Kebijakan yang akan ditetapkan sebagai kebijakan penjadwal default.

Keterangan

Jika metode dipanggil SetDefaultSchedulerPolicy ketika penjadwal default sudah ada dalam proses, runtime akan melemparkan pengecualian default_scheduler_exists .

Baca juga

Namespace layanan konkurensi
Kelas Penjadwal
PolicyElementKey
Tugas Microsoft Azure Scheduler