看流星社区

 找回密码
 注册账号
查看: 2850|回复: 2

[Delphi] 多核机器上编程实现将指定进程PID放到指定CPU上运行

[复制链接]

该用户从未签到

发表于 2011-4-3 15:17:40 | 显示全部楼层 |阅读模式
在多核心CPU上,0号CPU的使用率要比后面的123号CPU高出25%,在windows系统上可以通过任务管理器--关系设置,来实现将指定的进程放到指定的CPU上运行.这是windows自带的,不知道我们可不可以通过哪个API函数或别的没公开的函数来实现这个过程呢?

该用户从未签到

发表于 2011-4-3 15:18:03 | 显示全部楼层

  1. BOOL SetProcessAffinityMask(
  2.   HANDLE hProcess,                 // handle to process
  3.   DWORD_PTR dwProcessAffinityMask  // process affinity mask
  4. );
复制代码

该用户从未签到

发表于 2011-4-3 15:18:14 | 显示全部楼层

  1. procedure SetCPU(h: THandle; CpuNo: Integer);  //cpuNo = 1..n
  2. var
  3.   ProcessAffinity: Cardinal;
  4.   _SystemAffinity: Cardinal;
  5. begin
  6.   GetProcessAffinityMask(h, ProcessAffinity, _SystemAffinity);
  7.   ProcessAffinity := CpuNo;
  8.   SetProcessAffinityMask(h, ProcessAffinity)
  9. end;

  10. setCpu(GetCurrentProcess, 2); //到 cpu 核心 2 上面运行
复制代码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 06:53

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表