Aracılığıyla paylaş


Öncelik Artırmaları

Her iş parçacığının dinamik önceliği vardır. Bu, zamanlayıcının yürütülecek iş parçacığını belirlemek için kullandığı önceliktir. Başlangıçta, bir iş parçacığının dinamik önceliği temel önceliğiyle aynıdır. Sistem, dinamik önceliği artırıp düşürerek yanıt verme ve işlemci süresi için hiçbir iş parçacığının aç kalmamasını sağlayabilir. Sistem, temel öncelik düzeyi 16 ile 31 arasında olan iş parçacıklarının önceliğini artırmaz. Yalnızca 0 ile 15 arasında temel önceliğe sahip iş parçacıkları dinamik öncelik artışı alır.

Sistem, bir iş parçacığının dinamik önceliğini artırarak yanıt hızını aşağıdaki gibi artırır.

  • NORMAL_PRIORITY_CLASS kullanan bir işlem ön plana getirildiğinde, zamanlayıcı ön plan penceresiyle ilişkili işlemin öncelik sınıfını artırır, böylece herhangi bir arka plan işleminin öncelik sınıfından büyük veya buna eşit olur. öncelik sınıfı, işlem artık ön planda olmadığında özgün ayarına döner.

  • Zamanlayıcı iletileri, fare iletileri veya klavye girişi gibi bir pencere giriş aldığında zamanlayıcı, pencerenin sahibi olan iş parçacığının önceliğini artırır.

  • Engellenen iş parçacığının bekleme koşulları karşılandığında, zamanlayıcı iş parçacığının önceliğini artırır. Örneğin, disk veya klavye G/Ç ile ilişkili bir bekleme işlemi tamamlandığında, iş parçacığı bir öncelik artışı alır.

    SetProcessPriorityBoostveya SetThreadPriorityBoost işlevini çağırarak öncelik artırma özelliğini devre dışı bırakabilirsiniz. Bu özelliğin devre dışı bırakılıp bırakılmadığını belirlemek için GetProcessPriorityBoost veya getThreadPriorityBoostişleviniçağırın.

bir iş parçacığının dinamik önceliğini yükseltdikten sonra, iş parçacığı temel önceliğine geri dönene kadar, iş parçacığı bir zaman dilimini her tamamladığınızda zamanlayıcı bu önceliği bir düzey azaltır. bir iş parçacığının dinamik önceliği hiçbir zaman temel önceliğinin altında değildir.