首页 > 编程语言 >C++标准的一些特性记录:C++11的thread_local

C++标准的一些特性记录:C++11的thread_local

时间:2024-09-19 22:22:25浏览次数:3  
标签:11 变量 thread C++ 线程 include local

文章目录

thread_local

在多线程的编程环境里,一般来说,所有的线程都是共享同一个内存空间,也就是说如果定义一个变量,这个变量是被所有线程共享的,所以多个变量在访问同一个变量时,是需要加锁机制的,否则就会出现问题。

在C++11中,引入了一个关键字thread_local,如果有这个关键字修饰变量的话,编译器会将这个变量自动给每个线程都复制一份。这样就不需要进行加锁了。

我们用两端代码来对比一下,同时在代码中将变量地址输出,就可以看到是不是复制了一份了。

如下代码:

#include <iostream>
#include <thread>
#include <unistd.h>

// Declare a thread-local variable
int counter = 0;

void incrementCounter() {
    // Increment the counter for this thread
    for(int i=0;i<10;i++)
    {
        counter++;
        std::cout << "Thread ID: " << std::this_thread::get_id() &

标签:11,变量,thread,C++,线程,include,local
From: https://blog.csdn.net/pcgamer/article/details/142371296

相关文章

  • P1108 低价购买 题解
    这题在求最长下降子序列的基础上加了一个求方案数的要求,这就让这道题目变难了很多。我们考虑我们在求最长下降子序列的时候,总是从这一位,要么重新开始计数,要么只和前面的有关,所以前面的信息完全丢失了,无法判断有多少方案,所以我们就要针对前面的方案数设计一个dp来统计。可以称之......
  • C++代码编译过程
    代码转换成可执行文件的全过程看了一些网上的文章,觉的还是自己写写看看才能理解通透,也为找简历做准备。代码转换成可执行文件分为4个步骤,预处理、编译、汇编、链接。预处理这个过程是执行代码中的一些预处理指令,多说无益,直接上代码#include<iostream>#defineBesttrue;#i......
  • 蓝桥杯十五届软件赛C++B组题解
    最近蓝桥杯官网已经把十五届题目上架了,我会尽快的将题解发出来,没有发的过段时间再补。​​​​​​​数字接龙一个很鹅心的搜索题,一不注意就会写错,比赛的时候写不来,题目上架后也WA了两个样例才过。题目大意:也就是说从(1,1)开始 ,下一步路的数据总是要比当前数据大1,超过k就......
  • C++内存管理
    前言接下来我们继续学习C++的内存管理。1. C++/C中程序内存区域划分C++将内存区域划分为四个部分,分别是栈区,堆区,静态区,常量区。其中静态区又叫数据段,其中存储全局数据和动态数据。常量区又叫代码区,其中存储只读常量和可执行代码。栈里面存储函数参数,返回值,局部变量等。......
  • C++笔记21•C++11的新特性•
       相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而......
  • C++入门基础知识76(实例)——实例 1【输出 “Hello, World!“】
    成长路上不孤单......
  • 代码随想录刷题day13 | LeetCode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之
    110.平衡二叉树力扣题目链接后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树1.三元运算符:(?:)condition?expression_if_true:expression_if_false;前面是条件,如果符合就等于冒号前的expression_if_true,反之则是后面的。2.如果要使用if(!node->left),要......
  • Springboot基于MVVM的微小型人力资源管理系统v011j(程序+源码+数据库+调试部署+开发环
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着企业规模的扩大,人力资源管理成为企业运营中不可或缺的一环。然而,对于微小型企业而言,传统的人力资源管理系统往往过于庞大复......
  • C++刷怪笼(6)模板初阶
    1.前言在学习C++模板之前,我们会被同种函数的不同数据类型的繁琐写法而折磨,今天我们进入对模板的学习,来进一步的感受C++为我们今后的编程学习和工作所带来的便利。2.模板2.1泛型编程我们应该如何去实现一个所有数据类型通用的函数?voidSwap(int&left,int&right){i......
  • 【c++基础知识——&引用的深度理解】
    C++引用深度理解对于一个函数来说,传值和传引用,在函数功能上没有区别,但在性能和副作用方面有显著差异。传值当按值传递参数时,函数会创建参数的一个副本。这样做的好处是函数内部对参数的修改不会影响原始变量,但缺点是对于大对象来说,拷贝操作会带来性能开销。传引用......