目的
有时候我们需要将某些特殊进程或者线程绑定到某个cpu中,来提高效率。
测试代码
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <pthread.h>
#include <sched.h>
int main(int argc, char **argv)
{
cpu_set_t mask;
while(1)
{
CPU_ZERO(&mask);
CPU_SET(0, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}
sleep(1); //预留切换时间
CPU_ZERO(&mask);
CPU_SET(1, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}
sleep(1);
}
return 0;
}
注意
1.不要将pthread.h与sched.h包含位置反了,或者不包含pthread.h头文件,编译都会有问题的。
2.切换cpu需要预留cpu切换时间。
编译与运行
centos 安装htop
yum install epel-release -y
yum install htop -y
设置htop 显示cpu使用情况
查看cpu使用情况