Jadwalkan Grup
Dokumen ini menjelaskan peran grup jadwal dalam Concurrency Runtime. Grup jadwal mengafinisikan, atau mengelompokkan, tugas terkait bersama-sama. Setiap penjadwal memiliki satu atau beberapa grup jadwal. Gunakan grup jadwal saat Anda memerlukan tingkat lokalitas tinggi di antara tugas, misalnya, ketika sekelompok tugas terkait mendapat manfaat dari eksekusi pada simpul prosesor yang sama. Sebaliknya, gunakan instans penjadwal saat aplikasi Anda memiliki persyaratan kualitas tertentu, misalnya, ketika Anda ingin membatasi jumlah sumber daya pemrosesan yang dialokasikan untuk serangkaian tugas. Untuk informasi selengkapnya tentang instans penjadwal, lihat Instans Penjadwal.
Tip
Runtime Konkurensi menyediakan penjadwal default, dan oleh karena itu Anda tidak diharuskan untuk membuatnya di aplikasi Anda. Karena Task Scheduler membantu Anda menyempurnakan performa aplikasi Anda, kami sarankan Anda memulai dengan Pustaka Pola Paralel (PPL) atau Pustaka Agen Asinkron jika Anda baru menggunakan Runtime Konkurensi.
Setiap Scheduler
objek memiliki grup jadwal default untuk setiap simpul penjadwalan. Simpul penjadwalan memetakan ke topologi sistem yang mendasar. Runtime membuat satu simpul penjadwalan untuk setiap paket prosesor atau node Non-Uniform Memory Architecture (NUMA), angka mana pun yang lebih besar. Jika Anda tidak secara eksplisit mengaitkan tugas dengan grup jadwal, penjadwal memilih grup mana yang akan ditambahkan tugasnya.
Kebijakan SchedulingProtocol
penjadwal memengaruhi urutan di mana penjadwal menjalankan tugas di setiap grup jadwal. Ketika SchedulingProtocol
diatur ke EnhanceScheduleGroupLocality
(yang merupakan default), Penjadwal Tugas memilih tugas berikutnya dari grup jadwal yang sedang digabungkan ketika tugas saat ini selesai atau dihasilkan secara kooperatif. Penjadwal Tugas mencari grup jadwal saat ini untuk bekerja sebelum berpindah ke grup berikutnya yang tersedia. Sebaliknya, ketika SchedulingProtocol
diatur ke EnhanceForwardProgress
, penjadwal berpindah ke grup jadwal berikutnya setelah setiap tugas selesai atau menghasilkan. Untuk contoh yang membandingkan kebijakan ini, lihat Cara: Menggunakan Grup Jadwal untuk Memengaruhi Urutan Eksekusi.
Runtime menggunakan kelas konkurensi::ScheduleGroup untuk mewakili grup jadwal. Untuk membuat ScheduleGroup
objek, panggil metode concurrency::CurrentScheduler::CreateScheduleGroup atau concurrency::Scheduler::CreateScheduleGroup . Runtime menggunakan mekanisme penghitungan referensi untuk mengontrol masa ScheduleGroup
pakai objek, seperti halnya dengan Scheduler
objek. Saat Anda membuat ScheduleGroup
objek, runtime mengatur penghitung referensi ke objek. Konkurensi ::ScheduleGroup::Metode referensi menaikkan penghitung referensi satu per satu. Konkurensi ::ScheduleGroup::Metode rilis mengurangi penghitung referensi satu per satu.
Banyak jenis dalam Concurrency Runtime memungkinkan Anda mengaitkan objek bersama dengan grup jadwal. Misalnya, kelas konkurensi::kelas agen dan kelas blok pesan seperti konkurensi::unbounded_buffer, konkurensi::join, dan konkurensi::timer, menyediakan versi konstruktor yang kelebihan beban yang mengambil ScheduleGroup
objek. Runtime menggunakan Scheduler
objek yang terkait dengan objek ini ScheduleGroup
untuk menjadwalkan tugas.
Anda juga dapat menggunakan metode concurrency::ScheduleGroup::ScheduleTask untuk menjadwalkan tugas ringan. Untuk informasi selengkapnya tentang tugas ringan, lihat Tugas Ringan.
Contoh
Untuk contoh yang menggunakan grup jadwal untuk mengontrol urutan eksekusi tugas, lihat Cara: Menggunakan Grup Jadwal untuk Memengaruhi Urutan Eksekusi.
Lihat juga
Tugas Microsoft Azure Scheduler
Instans Penjadwal
Cara: Menggunakan Grup Jadwal untuk Memengaruhi Urutan Eksekusi