C++11 thread_local
C++11 thread_local
c++11引入thread_local关键字,用thread_local修饰的变量具有thread周期,从属于访问它的线程,线程第一次访问它时创建它且只创建一次(与被static的修饰的变量是一样的,多实例共享一份),线程结束时系统释放该变量。简单点说就是变成在各自线程中static变量
#include <bits/stdc++.h>
class Thread_Local_A {
public:
Thread_Local_A() {}
~Thread_Local_A() {}
void add(const std::string &name) {
thread_local int count = 0;
++count;
std::cout << name << ": " << count << std::endl;
}
};
void func(const std::string &name) {
Thread_Local_A a1;
a1.add(name);
a1.add(name);
Thread_Local_A a2;
a2.add(name);
a2.add(name);
}
thread_local int sum = 0;
void add(const std::string &name) {
for (int i = 0; i < 10; ++i) {
++sum;
std::cout << name << ": " << sum << std::endl;
}
}
int main() {
std::thread(add, "t1").join();
std::thread(add, "t2").join();
std::thread(func, "t3").join();
std::thread(func, "t4").join();
return 0;
}
输出:
t1: 1
t1: 2
t1: 3
t1: 4
t1: 5
t1: 6
t1: 7
t1: 8
t1: 9
t1: 10
t2: 1
t2: 2
t2: 3
t2: 4
t2: 5
t2: 6
t2: 7
t2: 8
t2: 9
t2: 10
t3: 1
t3: 2
t3: 3
t3: 4
t4: 1
t4: 2
t4: 3
t4: 4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗