Добавить комментарий

Delphi

Как выбрать ядра, на которых может выполняться процесс

Разрешённые для процеcса ядра задаются при помощи Affinity mask.

Это битовая маска, один бит - одно ядро, с младших разрядов. 

В программах, запускающих параллельные потоки может быть интересно ограничить нагрузку на систему, сделав недоступными себе несколько ядер.

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

procedure DoIt;
var
    ProcessAfMask,             // Маска для процесса.
    SystemAfMask : NativeUInt; // Маска для системы.
begin
  // Получаем маски.
  GetProcessAffinityMask(GetCurrentProcess, ProcessAfMask, SystemAfMask);
  // Устанавливаем себе маску как в системе, только отключив первое ядро.
  SetProcessAffinityMask(GetCurrentProcess, SystemAfMask - 1);
end;
Метки:

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Вы можете цитировать другие сообщения, используя тэг [quote]

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.