Linux下CMake编译链接线程库以及线程绑定方式

 更新时间:2026年03月31日 09:11:10   作者:球头制造者  
文章主要介绍了使用CMake编译链接线程库的方法以及在Linux下使用pthread_setaffinity_np()函数将线程绑定到指定CPU的方法,同时提供了相关的代码示例和步骤

CMake编译链接线程库

1. 设置链接选项

使用 CMake 编译程序时,需要设置链接选项来链接 pthread 库。

在 CMakeLists.txt 文件中添加链接选项,即在add_executable()下面添加以下代码将 pthread 链接库添加到目标可执行文件中:

target_link_libraries(target_name pthread)

target_name为目标可执行文件的名称。

2. 进行编译

使用make命令进行编译即可。

线程绑定

程序中使用多线程时,通常会将线程指定到某个CPU上运行,这样可以减少竞争,提高程序应用性能。但是linux下和windows的写法不太一样,下面就总结一下在linux下的线程绑定方法。

主要使用pthread_setaffinity_np()函数将线程绑定到指定的CPU,该函数需要传入线程ID和一个CPU集合参数,其中CPU集合参数表示要使用的CPU编号。

具体步骤如下:

1. 添加头文件

#include <pthread.h>

2. 定义线程执行函数

void *thread_func(void *arg) 
{
    // 线程执行的任务
    // ...
}

3. 创建线程

pthread_t thread_id;
pthread_create(&thread_id, NULL, &thread_func, NULL);

4. 设置CPU集合

cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(cpu_id, &cpuset); 

5. 线程绑定到指定CPU

pthread_setaffinity_np(thread_id, sizeof(cpuset), &cpuset);

6. 等待子线程执行完毕

pthread_join(thread_id, NULL);

注:上述中cpu_id为绑定的CPU编号,即 0,1,2...

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • CentOS 设置默认JDK步骤详解及命令

    CentOS 设置默认JDK步骤详解及命令

    这篇文章主要介绍了 CentOS 设置默认JDK步骤详解及命令的相关资料,这里对配置Java的环境进行了详细的介绍,需要的朋友可以参考下
    2016-11-11
  • Linux修改pip和conda缓存路径的几种方法

    Linux修改pip和conda缓存路径的几种方法

    在 Python 生态中,pip 和 conda 是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径,不仅可以优化存储管理,还可以在存储空间有限,本文将详细介绍如何修改 pip 和 conda 的缓存路径
    2025-03-03
  • 详述Linux中Firewalld高级配置的使用

    详述Linux中Firewalld高级配置的使用

    这篇文章主要介绍了详述Linux中Firewalld高级配置的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • linux 服务器安装gcc8的问题记录

    linux 服务器安装gcc8的问题记录

    我原本安装了gcc13.0版本,但是版本太高了,导致我安装cuda报错gcc版本太高,所以就安装低版本的gcc,下面通过本文给大家分享linux 服务器安装gcc8的问题记录,感兴趣的朋友一起看看吧
    2024-07-07
  • CentOS7下实现终端输入中文设置详解

    CentOS7下实现终端输入中文设置详解

    这篇文章主要给大家介绍了关于CentOS7下实现终端输入中文设置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用CentOS7系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Linux字符终端如何用鼠标移动一个红色矩形详解

    Linux字符终端如何用鼠标移动一个红色矩形详解

    这篇文章主要给大家介绍了关于Linux字符终端如何用鼠标移动一个红色矩形的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Linux配置yum源以及基本yum指令的实现

    Linux配置yum源以及基本yum指令的实现

    本文主要介绍了Linux配置yum源以及基本yum指令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 阿里云CentOS 7.4 使用Flask建站的方法

    阿里云CentOS 7.4 使用Flask建站的方法

    这篇文章主要介绍了阿里云CentOS 7.4 使用Flask建站的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Ubuntu解除文件锁定的几种方法

    Ubuntu解除文件锁定的几种方法

    在Ubuntu中,解除文件锁定的方法取决于文件被哪个进程锁定,本文给大家介绍了几种常见的解除文件锁定的方法,并通过代码示例讲解的非常详细,需要的朋友可以参考下
    2025-06-06
  • Linux设备之网络驱动介绍

    Linux设备之网络驱动介绍

    大家好,本篇文章主要讲的是Linux设备之网络驱动介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论