自学内容网 自学内容网

c++11~c++20 thread_local

线程局部存储是指对象内存在线程开始后分配,线程结束时回收且每个线程有该对象自己的实例,简单地说,线程局部存储的对象都是独立各个线程的。实际上这并不是一个新鲜个概念,虽然C++一直没因在语言层面支持它,但是很早之前操作系统就有办法支持线程局部存储了。下面是一个例子:

使用static

void test()
{
static int i = 0;
for (int j = 0;j<10;j++)
{
i++;
printf("i = %d\n",i);
}
}


int main()
{

thread t1(test);
t1.join();

thread t2(test);
t2.join();

system("pause");
return 0;
}

结果:
在这里插入图片描述

使用thread_local

void test()
{
thread_local int i = 0;
for (int j = 0;j<10;j++)
{
i++;
printf("i = %d\n",i);
}
}

结果:
在这里插入图片描述


原文地址:https://blog.csdn.net/FairLikeSnow/article/details/142798155

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!