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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk