线程或者进程bind到指定cpu

目的

    有时候我们需要将某些特殊进程或者线程绑定到某个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切换时间。

编译与运行

线程或者进程bind到指定cpu

centos 安装htop
 

yum install epel-release -y

yum install htop -y

设置htop 显示cpu使用情况

线程或者进程bind到指定cpu

查看cpu使用情况

线程或者进程bind到指定cpu

线程或者进程bind到指定cpu

 

上一篇:springboot整合quartz并持久化到数据库


下一篇:python 设置开机启动脚本