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.

Baca juga

Tugas Microsoft Azure Scheduler
Instans Penjadwal
Cara: Menggunakan Grup Jadwal untuk Memengaruhi Urutan Eksekusi