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
网友评论