如何将线程/进程在一个/多个CPU核上运行
设置线程/进程与CPU的亲缘性,就是将线程/进程与CPU核进行绑定起来。
实现方法: 设置线程与指定cpu核绑定:SetThreadAffinityMask(GetCurrentThread(),mask); 设置进程与指定cpu核绑定:SetProcessAffinityMask(GetCurrentProcess(),mask); 参数说明:mask是CPU序号的或运算值:1(00000001)表示只运行在CPU第一个核上,2(00000010)表示只运行在CPU第二个核上,3(00000011)表示运行在CPU第一和第二个核上,4(00000100)表示只运行在CPU第三个核上,以此类推设置绑定对应的CPU核。
#include
#include
#include
using namespace std;
void t();
void t1(int cpu)
{
int a = 0, b = 0;
SetThreadAffinityMask(GetCurrentThread(), cpu);//绑定线程与cpu核
int cpu_num = GetCurrentThreadNumber();//获取当前线程在对应的cpu核上运行
cout |