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

2023-11-07

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...

结语

道阻且长,且学且珍惜......

总结不易,点个赞吧(●'◡'●)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下CMake编译链接线程库以及线程绑定 的相关文章

随机推荐

  • 当贝显示服务器生病,【当贝市场】电视盒子卡顿的三大原因

    原标题 当贝市场 电视盒子卡顿的三大原因 很多不明真相的网友在购买了电视盒子之后会出现同样的问题 家里的电视盒子越用越卡 尤其是在看直播节目的时候出现很明显的卡顿掉帧现象 可能你会问 家里的电视盒子越用越卡是不是跟网速有关 通过小编长时间的
  • mysql分表的3种方法

    参考 https blog csdn net czh500 article details 89735492 一 先说一下为什么要分表 一张的数据达到几百万时 你查询一次所花的时间会变多 如果有联合查询的话 我想有可能会死在那儿了 分表的目
  • S-DES的简单理解和实例

    S DES是一个供教学而非安全使用的加密算法 与DES的特性和结构类似 但它参数小 明文分组为8位 主密钥分组为10位 采用两轮选代 例题 采用手工方式使用 S DES用密钥 01111 11101 解密比特串 1010 0010 写出每个
  • 观察进程的内存占用情况

    概述 想必在linux上写过程序的同学都有分析进程占用多少内存的经历 或者被问到这样的问题 你的程序在运行时占用了多少内存 物理内存 通常我们可以通过top命令查看进程占用了多少内存 这里我们可以看到VIRT RES和SHR三个重要的指标
  • Go高级编程详解

    一 数据操作 1 读取用户的输入 我们如何读取用户的键盘 控制台 输入呢 从键盘和标准输入 os Stdin 读取输入 最简单的办法是使用 fmt 包提供的 Scan 和 Sscan 开头的函数 请看以下程序 示例 readinput1 g
  • sklearn实现支持向量机

    机器学习入门实验之支持向量机 简单实验 使用sklearn完成 代码如下 注 本文章主要是为方便自己以后复习所学内容而写 并不做详细介绍 支持向量机 这里是线性核 sklearn自带软间隔支持向量机 import pandas as pd
  • 用计算机数字语言研究中医理论,试论中医基础理论数字模型.pdf

    试论中医基础理论数字模型 pdf 维普资讯 知 盈 世界科学技术 中药现代化 中医现代化 医 学 课 堂 摘 要 中医基础理论研究的现代化是中医现代化的基础和前提 提出将中医学的基本概念进行 进制数字编码 根据中医原理和规律确定算法 建立数
  • macos 解决 Failed building wheel for xxx

    Failed building wheel for greenlet meinheld ujson 一 手动下载whl文件 二 xcode select install 三 多个版本MacOSX sdk pip install时可能会失败
  • 城市内涝积水监测预警系统的重要性

    一 系统概述 随着我国城镇化快速发展 城市建设产生的大量地面硬底化 大部分的降雨将形成地表径流 仅有少量雨水渗入地下 导致城市内涝等一系列问题 当前 全国多地发生洪涝 我国南北方全面进入主汛期 需要重点防治暴雨造成的城乡内涝 山体滑坡等安全
  • 【java】高并发之限流 RateLimiter使用

    1 概述 转载原文 高并发之限流 你可能知道高并发系统需要限流这个东西 但具体是限制的什么 该如何去做 还是模凌两可 我们接下来系统性的给它归个小类 希望对你有所帮助 google guava中提供了一个限流实现 RateLimiter 这
  • chmod函数

    int chmod const char pathname mode t mode 作用 修改文件的权限 参数 mode 需要修改的权限值 宏或者八进制数 返回值 成功 0 失败 1 include
  • 线性表顺序存储及相关操作(创建,插入,删除,遍历)

    线性表类型的定义 线性表是由同类数据元素构成的有序序列的线性结构 表中元素个数 n gt 0 称为线性表的长度 n 0时称为空表 在复杂线性表中 一个数据元素可以由若干个数据项 item 组成 这种情况下 常把数据元素称为记录 record
  • Linux 入门笔记(根据传智韩顺平整理的(一))

    开发步骤 1 Vi Hello java 2 输入i进入插入模式 3 输入esc 进入命令模式 4 输入 冒号 wq保存退出 q 退出不保存 5 编译Hello java gt javac Hello java 6 运行 java Hell
  • C++如何显示一个函数被调用的次数

    问题1 如何显示一个函数被调用的次数 使用static关键字 汉诺塔问题局部 void move char src char dest static int n 1 n具有全局寿命 但是局部可见 cout lt
  • 什么是漏洞扫描?

    首先什么是漏洞 国内外各种规范和标准中关于漏洞 也称脆弱性 英文对应Vulnerability 的定义很多 摘录如下 互联网工程任务组RFC4949 1 系统设计 部署 运营和管理中 可被利用于违反系统安全策略的缺陷或弱点 中国国家标准 信
  • 分布式与高并发(一)了解多线程的意义和使用

    了解多线程的意义和使用 什么是线程 并发与高并发 客户端向Tomcat发送请求 在Tomcat中存在多个个并发数 这个并发数由什么决定的 并发 单位时间内能够同时处理的请求数 默认情况下Tomcat可以支持的最大请求数是150 也就是同时支
  • 资深测试老鸟整理,性能测试-常见调优详细,卷起来...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • python报错“No module named xarray”

    在python运行 import xarray as xr 报错 No module named xarray 在命令提示符中显示已安装 一 检查 1 确认 Python 解释器路径 运行以下代码 查看正在使用的 Python 解释器路径
  • python:playwright结合pytest执行用例

    playwright结合Pytest为您的 Web 应用程序编写端到端的测试 安装pytest插件 C Users lifeng01 gt pip install pytest playwright Collecting pytest pl
  • Linux下CMake编译链接线程库以及线程绑定

    CMake编译链接线程库 1 设置链接选项 使用 CMake 编译程序时 需要设置链接选项来链接 pthread 库 在 CMakeLists txt 文件中添加链接选项 即在add executable 下面添加以下代码将 pthread