美文网首页
c++线程局部存储

c++线程局部存储

作者: 一路向后 | 来源:发表于2021-08-16 20:57 被阅读0次

1.源码例子

#include <iostream>
#include <thread>

using namespace std;

thread_local int gCount = 10;

class Test {
public:
    Test(){}

    void test(const string &name)
    {
        thread_local int count = 1;
        ++count;
        _count += 100;
        gCount += 10;

        cout << name << "--count: " << count << endl;
        cout << name << "--gCount: " << gCount << endl;
        cout << name << "--_count: " << _count << endl;
    }

private:
    static thread_local int _count;
};

thread_local int Test::_count = 100;

void func(const string &name)
{
    Test a1;
    a1.test(name);
    a1.test(name);
    Test a2;
    a2.test(name);
    a2.test(name);
}

int main()
{
    thread t1(func, "t1");

    t1.join();

    thread t2(func, "t2");

    t2.join();

    thread t3(func, "t3");

    t3.join();

    return 0;
}

2.编译源码

$ g++ -o example example.cpp -std=c++11 -lpthread

3.运行及其结果

$ ./example
t1--count: 2
t1--gCount: 20
t1--_count: 200
t1--count: 3
t1--gCount: 30
t1--_count: 300
t1--count: 4
t1--gCount: 40
t1--_count: 400
t1--count: 5
t1--gCount: 50
t1--_count: 500
t2--count: 2
t2--gCount: 20
t2--_count: 200
t2--count: 3
t2--gCount: 30
t2--_count: 300
t2--count: 4
t2--gCount: 40
t2--_count: 400
t2--count: 5
t2--gCount: 50
t2--_count: 500
t3--count: 2
t3--gCount: 20
t3--_count: 200
t3--count: 3
t3--gCount: 30
t3--_count: 300
t3--count: 4
t3--gCount: 40
t3--_count: 400
t3--count: 5
t3--gCount: 50
t3--_count: 500

相关文章

  • c++线程局部存储

    1.源码例子 2.编译源码 3.运行及其结果

  • 线程局部存储

    线程局部存储 线程局部存储(TLS,thread local storage) 就是拥有线程生命周期及线程可见性的...

  • 深入多线程4

    线程局部变量线程局部变量也叫线程局部存储,ThreadLocal类给每个线程都添加了一个变量,专门来存储每一个线程...

  • Java ThreadLocal 的用法

    前言 ThreadLocal提供了线程局部变量,当前线程全局共享,线程隔离。 源码实现 线程局部变量是存储在Thr...

  • 一文详解Java中的ThreadLocal

    ThreadLocal用于多线程环境下每个线程存储和获取线程的局部变量,这些局部变量与线程绑定,线程之间互不影响。...

  • 线程局部存储tls的使用

    线程局部存储(Thread Local Storage,TLS)主要用于在多线程中,存储和维护一些线程相关的数据,...

  • Linux 中的线程局部存储(2)

    《Linux 中的线程局部存储(1)》提到了一种,其实在Linux中还有一种更为高效的线程局部存储方法,就是使用关...

  • JVM篇

    一、java内存区域的组成 程序计数器,线程私有,用来存储线程执行到哪条字节码指令; 栈,线程私有,存储局部变量,...

  • AutoreleasePool解析

    关键点 双向链表 AutoreleasePoolPageData TLS 线程局部存储? HotPage和Cold...

  • 线程局部存储空间 pthread_key_t、__thread

    线程局部存储空间 pthread_key_t、__thread 即 ThreadLocal__threadpthr...

网友评论

      本文标题:c++线程局部存储

      本文链接:https://www.haomeiwen.com/subject/mfyvbltx.html