كيفية تقييد استخدام وحدة المعالجة المركزية يأخذ # برنامج C؟

StackOverflow https://stackoverflow.com/questions/251198

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا تطوير C # البرنامج، ولدي وظيفة واحدة التي تستهلك الكثير من وحدة المعالجة المركزية. أود أن أعرف طريقة للسيطرة على هذا عن طريق كود (وليس مع أي تطبيق خارجي) وتقييد نسبة استخدام وحدة المعالجة المركزية. على سبيل المثال، إذا كان يستخدم 90٪ من استخدام وحدة المعالجة المركزية، لجعل بلدي التطبيق تستهلك فقط 20٪، حتى إذا أصبح أبطأ. يجب أن يتم ذلك تلقائيا ومن داخل التطبيق. إذا توفر فئة، فإنه سيكون رائعا.

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

المحلول

وأنا لا أعرف ما إذا كنت تستطيع أن تفعل ذلك، ولكن يمكنك تغيير موضوع الأولوية لموضوع تنفيذ طريق في الأولوية الملكية . يمكنك تعيين ذلك عن طريق:

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

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

نصائح أخرى

ويمكنك إبطاء حلقة بالدعوة Thread.Sleep (ميلي ثانية) داخل الحلقة. أن يسلم وحدة المعالجة المركزية إلى جدولة.

ولكن "تستهلك الكثير من وحدة المعالجة المركزية" يجعلني أفكر قد تكون لديكم مشاكل أكثر جوهرية. هل هذا الاقتراع موضوع وانتظار شيء آخر؟ إذا كان الأمر كذلك، عليك أن تنظر في استخدام الأحداث أو بعض أخرى آلية إشارات القائم على النواة.

واعتقد انك بحاجة للاستعلام نوعا من نظام التشغيل API لمعرفة كم من وحدة المعالجة المركزية والتي تستهلك واتخاذ القرارات اختناق (مثل Thread.Sleep) من أن جرا.

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