Как установить близость процессора к программе?

У меня есть программа, написанная на С#, я использую VSTS 2008 +.Net 3.5 + Windows Vista Enterprise x86 для разработки приложения Windows Forms.

Мой текущий компьютер - двухъядерный процессор, я хочу настроить близость процессора к моей программе для работы на определенном процессоре и освободить другой процессор для выполнения другой работы. Есть идеи, как это сделать? Либо через кодирование, либо конфигурирование в порядке.

Немного больше фона, моя программа имеет интенсивность процессора, поэтому я не хочу, чтобы она занимала все два ресурса ЦП на моем компьютере, и я хочу освободить один процессор, чтобы я мог быстро просматривать сеть в одно и то же время.: -)

спасибо заранее, Джордж

Ответ 1

  • Перейдите на вкладку Диспетчер задач Процессы.
  • Ищите свою программу. Щелкните правой кнопкой мыши по нему.
  • Выберите Установить Affinity и снимите флажок.

Это должно освободить один процессор для вас.

Для выполнения этого кода вы можете добавить следующее утверждение:

System.Diagnostics.Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr) 1;

Ура!

Ответ 2

Функции Windows API для этого: SetProcessAffinityMask() и SetThreadAffinityMask(). Я не знаю .NET, поэтому не могу сказать, существуют ли оболочки вокруг этих функций, но this, как представляется, предлагает иначе.

BTW: Я согласен, что это необходимо только в особых обстоятельствах, обычно лучше всего разрешить планировщику ОС. Это один из тех вопросов, где вы, вероятно, не должны этого делать, если вам нужно спросить, как это сделать.

Ответ 3

На самом деле, ваше приложение не будет использовать более одного ЦП, если вы специально не сделаете что-то, чтобы использовать больше процессоров. Если вы используете пул потоков и/или запускаете дополнительные потоки, вы можете использовать дополнительные доступные ядра, но в противном случае ваше приложение будет иметь только один поток по умолчанию и, следовательно, использовать только один процессор.