【线程绑定cpu核心】

本文展示了如何在C++中使用pthread库创建线程,并将线程绑定到指定的CPU核心,以便于优化多核系统性能。通过`pthread_create`和`pthread_join`函数实现线程启动和同步。
摘要由CSDN通过智能技术生成

使用cat /proc/cpuinfo命令查询了自己设备的CPU

#ifndef _GNU_SOURCE
    #define _GNU_SOURCE
#endif
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <iostream>

void* thread_func(void* arg) {
    printf("Thread start.\n");

    // 绑定线程到第二个CPU核心上
    cpu_set_t cpu_set;
    CPU_ZERO(&cpu_set);
    CPU_SET(1, &cpu_set);
    pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpu_set);

    // 执行线程任务
    while(1){
        std::cout<< "pthread" <<'\n';
        sleep(1);
    }
    printf("Thread end.\n");
    return NULL;
}

// g++ threadcpu.cpp -o threadcpu -lpthread -std=c++14
int main(int argc, char* argv[]) {
    // 创建线程
    pthread_t tid;
    int rc = pthread_create(&tid, NULL, thread_func, NULL);
    if (rc != 0) {
        perror("pthread_create");
        exit(EXIT_FAILURE);
    }

    // 等待线程执行完毕
    pthread_join(tid, NULL);

    return 0;
}

在这里插入图片描述
top -p 4078
在这里插入图片描述
gdb threadcpu -p 4078
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值