C++11 thread_local学习笔记

C++11 thread_local

thread_local 是 C++11 中引入的关键字,用于声明线程局部存储变量。线程局部存储变量是一种在每个线程中都有其自己的独立实例的变量。每个线程都可以独立地访问和修改其线程局部存储变量,而不会影响其他线程的对应变量。

使用 thread_local 关键字声明的变量,其生命周期与所属线程的生命周期相同。当线程终止时,与其相关的 thread_local 变量也会被销毁。

测试代码:

#include <iostream>
#include <thread>
#include <unistd.h>
#include <mutex>// 声明一个线程局部存储变量
thread_local int threadLocalVariable = 0;
std::mutex mutex;void threadFunction(int num)
{// 在线程函数中访问线程局部存储变量for (int i = 0; i < 3; i++){threadLocalVariable += num;{std::lock_guard<std::mutex> guard(mutex); std::cout << "Thread [" << num << "]: " << threadLocalVariable << std::endl;}sleep(1);}
}int main()
{threadLocalVariable += 10;// 创建两个线程std::thread t1(threadFunction, 1);std::thread t2(threadFunction, 2);std::thread t3(threadFunction, 3);// 等待线程结束t1.join();t2.join();t3.join();// 主线程中访问线程局部存储变量std::cout << "Thread [master]: " << threadLocalVariable << std::endl;return 0;
}

代码输出

···log
$ ./main
Thread [1]: 1
Thread [2]: 2
Thread [3]: 3
Thread [1]: 2
Thread [2]: 4
Thread [3]: 6
Thread [1]: 3
Thread [2]: 6
Thread [3]: 9
Thread [master]: 10
···

mutex防止多线程同时输出和测试内容无关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【stm32】I2C通信外设

【stm32】I2C通信外设 概念部分 如果简单应用&#xff0c;选择软件I2C。如果对性能指标要求比较高 选择硬件I2C 有硬件电路自动反转引脚电平&#xff0c;软件只需要写入控制寄存器CR和数据寄存器DR 为了实时监控时序的状态&#xff0c;还要读取状态寄存器SR 写入控制寄存器CR…

力扣刷题 二叉树遍历的统一迭代法

题干 给定一个二叉树的根节点 root &#xff0c;返回 它的 前中后序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#xff1a;root […

数据挖掘入门项目二手交易车价格预测之建模调参

文章目录 目标步骤1. 调整数据类型&#xff0c;减少数据在内存中占用的空间2. 使用线性回归来简单建模3. 五折交叉验证4. 模拟真实业务情况5. 绘制学习率曲线与验证曲线6. 嵌入式特征选择6. 非线性模型7. 模型调参&#xff08;1&#xff09; 贪心调参&#xff08;2&#xff09;…

fping命令

fping是一个用于网络扫描的工具&#xff0c;它可以在 Linux 系统上使用。fping可以发送 ICMP ECHO_REQUEST&#xff08;即 ping&#xff09;数据包到指定的网络地址范围&#xff0c;并等待响应。通过这种方式&#xff0c;fping可以用来检测哪些 IP 地址是活跃的。 可以测试多个…

做亚马逊需要IP代理吗?需要纯净度高的吗?

做亚马逊需要IP代理吗&#xff1f; 在亚马逊平台上进行业务活动时&#xff0c;是否需要使用IP代理取决于具体的业务需求和操作环境。以下是一些考虑因素&#xff1a; 多账号管理&#xff1a;如果您在亚马逊上拥有多个卖家账号&#xff0c;为了避免账号关联风险&#xff0c;使…

浮动辊位移测量功能块(CODESYS ST代码)

1、张力测量+标定(ST代码) 张力测量+标定(ST代码)_动态舞轮控制张力-CSDN博客文章浏览阅读804次。跳舞轮对应张力调节范围,我们可以通过改变气缸的气压方式间接改变,张力跳舞轮在收放卷闭环控制上的详细应用,可以参看下面的文章链接,这里我们主要讨论精密可调气阀的模拟量…

第五届信大超越杯团体赛部分题解

第五届信大超越杯团体赛部分题解 B 时间的礼物 题目大意&#xff1a; 给定一个数n&#xff0c;通过分解n得到一个m大小的数组&#xff08;数组元素可以是0&#xff09;。问一共有多少种解决方案。答案对P取模。 输入三个整数 n,m,P。 样例输入&#xff1a; 4 2 10 样例输出…

每日五道java面试题之ZooKeeper篇(三)

目录&#xff1a; 第一题. 会话管理第二题. 服务器角色第三题. Zookeeper 下 Server 工作状态第四题. 数据同步第五题. zookeeper 是如何保证事务的顺序一致性的&#xff1f; 第一题. 会话管理 分桶策略&#xff1a;将类似的会话放在同一区块中进行管理&#xff0c;以便于 Zoo…

autovacuum

相关查询语句 select relname,reltuples from pg_class where relnamepgbench_accounts; show autovacuum_vacuum_scale_factor ; select count(*) from pgbench_accounts; \dt pgbench_accounts SELECT * FROM pgstattuple(pgbench_accounts); --需要开启插件 SELECT relnam…

微软云学习环境

微软公有云 - Microsoft Azure 本文介绍通过微软学习中心Microsoft Learn来免费试用Azure上的服务&#xff0c;也不需要绑定信用卡。不过每天只有几个小时的时间。 官网 https://docs.microsoft.com/zh-cn/learn/ 实践 比如创建虚拟机&#xff0c;看到自己的账号下多了Learn的…

Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

>>>>>>问题 "cannot read property of undefined" 是一个常见的 JavaScript 错误&#xff0c;包含我在内很多人都会遇到&#xff0c;表示你试图访问一个未定义&#xff08;undefined&#xff09;对象的属性。这通常是因为你在访问一个不存在的对象…

(ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类

文章目录 相关论文摘要引言类别嵌入局限性——问题1普通ZSL模型局限性——问题2自动属性注释过程——对应问题1深度语义-视觉对齐&#xff08;DSVA&#xff09;模型——对应问题2 基于遥感多模态相似性的自动属性标注属性词汇表构造使用CLIP模型自动标注属性对CLIP模型进行训练…

Odoo中编写和执行自动化测试用例

在Odoo中&#xff0c;自动化测试是确保模块功能按预期工作的重要部分。自动化测试有助于在开发过程中快速发现和修复错误&#xff0c;提高软件质量&#xff0c;并确保代码更改不会引入新的问题。Odoo支持两种类型的测试&#xff1a;Python单元测试和YAML测试&#xff08;在较新…

YoloV8实战:使用YoloV8实现水下目标检测(RUOD)

摘要 水下目标检测技术在生态监测、管道检修、沉船捕捞等任务中发挥着重要作用。常用的检测方法包括高清视像、侧扫声呐等。光学图像检测因高分辨率和灵活性&#xff0c;在近距离检测中优势显著。但水下图像受水体吸收、衰减、光源分布等影响&#xff0c;呈现蓝绿色&#xff0…

ideaSSM 网上选课管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 网上选课管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff…

哈希-字母异位词分组

字母异位词&#xff0c;词频一样&#xff0c;但是顺序不一样&#xff0c;可以进行排序&#xff0c;获取一个key&#xff0c;放在map中即可。 class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> ma…

清明的商标从已注册到不良影响的变化!

清明时节雨纷纷&#xff0c;“清明”可以申请注册商标不&#xff0c;普推知产老杨经检索发现&#xff0c;2022年还有以“清明”通过初审下证的&#xff0c;在这之前更多&#xff0c;还有“清明”在方便食品类别上是著名商标&#xff0c;那个2022年通过初审的正在无效程序中。 2…

mbti,INTJ型人格的心理问题分析

什么是INTJ型人格&#xff1f; INTJ来自mbti职业性格测试&#xff0c;16种人格类型之一&#xff0c;INTJ分别代表内向&#xff0c;直觉&#xff0c;理智&#xff0c;独立&#xff0c;而INTJ型人格是一种以冷静和理性著称的人格&#xff0c;这种人格的人总给人一种比较理智&…

Linux下I2C驱动框架: I2C驱动框架与I2C总线驱动(即I2C控制器)

一. 简介 现在&#xff0c;我们来学习一下如何在 Linux 下开发 I2C 接口器件 驱动&#xff0c;重点是学习 Linux 下的 I2C 驱动框架&#xff0c;按照指定的框架去编写 I2C 设备驱动。 本文来了解以下 Linux下 I2C 驱动框架&#xff0c;框架下的 i2C总线驱动&#x…

力扣40 组合总和Ⅱ Java版本

文章目录 题目描述代码 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1:…