c++线程局部存储

2021-08-16  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读