Jadwalkan Grup

Dokumen ini menjelaskan peran grup jadwal dalam Concurrency Runtime. Grup penjadwalan mengaitkan, atau mengelompokkan, tugas terkait. 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.

Petunjuk / Saran

Runtime Konkurensi menyediakan penjadwal bawaan, jadi Anda tidak perlu 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 Concurrency Runtime.

Setiap Scheduler objek memiliki grup jadwal default untuk setiap simpul penjadwalan. Simpul penjadwalan memetakan dengan topologi sistem dasar yang mendasari. Runtime membuat satu simpul penjadwalan untuk setiap paket prosesor atau node Non-Uniform Memory Architecture (NUMA), tergantung pada mana yang memiliki jumlah 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 concurrency::CurrentScheduler::CreateScheduleGroup atau concurrency::Scheduler::CreateScheduleGroup metode. Runtime menggunakan mekanisme penghitungan referensi untuk mengontrol masa pakai objek ScheduleGroup, seperti halnya pada objek Scheduler. Saat Anda membuat objek ScheduleGroup, waktu proses mengatur penghitung referensi ke satu. Metode concurrency::ScheduleGroup::Reference meningkatkan penghitung referensi sebesar satu. Concurrency ::ScheduleGroup::Release method mengurangi penghitung referensi sebesar satu.

Banyak jenis dalam Concurrency Runtime memungkinkan Anda mengaitkan objek bersama dengan grup jadwal. Misalnya, kelas concurrency::agent dan kelas blok pesan seperti concurrency::unbounded_buffer, concurrency::join, dan concurrency::timer, menyediakan versi konstruktor yang overload yang menerima objek ScheduleGroup. 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

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