Bagikan melalui


Peningkatan Prioritas

Setiap utas memiliki prioritas dinamis. Ini adalah prioritas yang digunakan penjadwal untuk menentukan utas mana yang akan dijalankan. Awalnya, prioritas dinamis utas sama dengan prioritas dasarnya. Sistem dapat meningkatkan dan menurunkan prioritas dinamis, untuk memastikan bahwa itu responsif dan tidak ada utas yang kelaparan untuk waktu prosesor. Sistem tidak meningkatkan prioritas utas dengan tingkat prioritas dasar antara 16 dan 31. Hanya utas dengan prioritas dasar antara 0 dan 15 yang menerima peningkatan prioritas dinamis.

Sistem meningkatkan prioritas dinamis utas untuk meningkatkan responsivitasnya sebagai berikut.

  • Ketika proses yang menggunakan NORMAL_PRIORITY_CLASS dibawa ke latar depan, penjadwal meningkatkan kelas prioritas proses yang terkait dengan jendela latar depan, sehingga lebih besar dari atau sama dengan kelas prioritas dari proses latar belakang apa pun. Kelas prioritas kembali ke pengaturan aslinya ketika proses tidak lagi berada di latar depan.

  • Saat jendela menerima input, seperti pesan timer, pesan mouse, atau input keyboard, penjadwal meningkatkan prioritas utas yang memiliki jendela.

  • Ketika kondisi tunggu untuk utas yang diblokir terpenuhi, penjadwal meningkatkan prioritas utas. Misalnya, ketika operasi tunggu yang terkait dengan I/O disk atau keyboard selesai, utas menerima peningkatan prioritas.

    Anda dapat menonaktifkan fitur peningkatan prioritas dengan memanggil fungsi SetProcessPriorityBoost atau SetThreadPriorityBoost . Untuk menentukan apakah fitur ini telah dinonaktifkan, panggil fungsi GetProcessPriorityBoost atau GetThreadPriorityBoost .

Setelah menaikkan prioritas dinamis utas, penjadwal mengurangi prioritas tersebut satu tingkat setiap kali utas menyelesaikan potongan waktu, hingga utas turun kembali ke prioritas dasarnya. Prioritas dinamis utas tidak pernah kurang dari prioritas dasarnya.