前言
让某个线程固定到想要的cpu核上,达到抢占cpu资源的目的。
具体操作
#include <sched.h>
void CreateThread{
...
cpu_set_t cpuset;
//例如绑到4,5,6,7核上
CPU_ZERO(&cpuset);
CPU_SET(4, &cpuset);
CPU_SET(5, &cpuset);
CPU_SET(6, &cpuset);
CPU_SET(7, &cpuset);
sched_setaffinity(0, sizeof(cpuset), &cpuset); //可以判断性返回值如果小于0就绑核失败了
...
}
知识扫盲
sched_setaffinity
是Linux系统调用之一,用于将进程或线程绑定到特定的CPU或CPU核心。它可以用于设置进程的CPU亲和性(CPU Affinity),即指定任务只在特定CPU上运行。
该函数的原型为:
#include <sched.h>
int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *mask);
其中,pid为要设置的进程或线程的ID,cpusetsize为掩码字节数,通常设置为sizeof(cpu_set_t)即可;
mask则为CPU掩码值,表示将进程绑定到指定的CPU亲和力。该函数执行成功时返回0,否则返回-1,并设置errno参数以指示出错原因