The SetProcessAffinityMask function sets a processor affinity mask for the threads of the specified process.
BOOL SetProcessAffinityMask(
HANDLE hProcess,
DWORD_PTR dwProcessAffinityMask
);
//get system info
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
printf(" "
"dwNumberOfProcessors=%u, dwActiveProcessorMask=%u, wProcessorLevel=%u, "
"wProcessorArchitecture=%u, dwPageSize=%u ",
SystemInfo.dwNumberOfProcessors, SystemInfo.dwActiveProcessorMask, SystemInfo.wProcessorLevel,
SystemInfo.wProcessorArchitecture,SystemInfo.dwPageSize
);
if(SystemInfo.dwNumberOfProcessors <= 1) return;
DWORD dwMask = 0x0000;
DWORD dwtmp = 0x0001;
int nProcessorNum = 0;
for(int i = 0; i < 32; i++)
...{
if(SystemInfo.dwActiveProcessorMask & dwtmp)
...{
nProcessorNum++;
if(nProcessorNum <= 2)
...{
//如果系统中有多个处理器,则选择第二个处理器
dwMask = dwtmp;
}
else
...{
break;
}
}
dwtmp *= 2;
}//end of for
//进程与指定cpu绑定
SetProcessAffinityMask(GetCurrentProcess(), dwMask);
//线程与指定cpu绑定
//SetThreadAffinityMask(GetCurrentThread(),dwMask);
return ;
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/baodi_z/archive/2007/10/30/1857820.aspx