سؤال

على نظام التشغيل Windows يمكنني القيام بما يلي:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

كيف يمكنني أن أفعل نفس الشيء على * لا شىء؟

هل كانت مفيدة؟

المحلول

يحاول:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

لاحظ أنه يجب أن تعمل كمستخدم متميز حتى يعمل هذا.

(لمزيد من المعلومات، اكتب "man setpriority" في الموجه.)

نصائح أخرى

إذا كنت تفعل شيئًا كهذا ضمن نظام التشغيل Unix، فأنت تريد (كجذر) chmod، فأنت تقوم بمهمة وتعيين بت s.بعد ذلك، يمكنك تغيير الشخص الذي تعمل به، وما هي أولويتك، وجدولة سلسلة المحادثات الخاصة بك، وما إلى ذلك.في وقت التشغيل.

إنه أمر رائع طالما أنك لا تكتب تطبيقًا متعدد الخيوط على نطاق واسع يحتوي على خطأ فيه بحيث تتولى إدارة صندوق وحدة المعالجة المركزية 48 ولا يستطيع أحد إيقاف تشغيلك لأن كل وحدة معالجة مركزية لديك تدور بنسبة 100٪ مع تعيين كل الخيوط على SHED_FIFO ( يعمل حتى الاكتمال) يعمل كجذر.

لا ..لن أتكلم من واقع تجربة....

@ ألين

هل يمكنك خفض أولوية العملية الخاصة بك دون أن تكون مستخدمًا متميزًا؟

بالتأكيد.ومع ذلك، عليك أن تدرك أن هذا شارع ذو اتجاه واحد.لا يمكنك حتى العودة إلى حيث بدأت.وحتى التخفيضات الصغيرة إلى حد ما في الأولوية يمكن أن يكون لها تأثيرات كبيرة بشكل مذهل على وقت التشغيل عندما يكون هناك حمل كبير على النظام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top