根据这个,我可以看到定义 thread_local vector<int> V; ... // use V as a temporaryvariable等于 static thread_local vector<int> V; ... // use V as atemporary variable但是我发现在一些开源项目中使用了如下代码:
void
对于这种thread_local存储持续时间的使用是否有任何警告:inline T &thread_local_get() thread_local T只有声明为thread_local的对象才具有此存储持续时间。thread_local可以与静态或外部一起出现以调整连接。这是否为每个T(编译期间)和每个调用线程正确地分配了一个thread_local实例?是否有任何情况可能导致未定义的行为?
我认为thread_local变量是每个线程的私有变量,只是名称相同。但我发现的所有示例都在访问thread_local变量时使用mutex变量来锁定该变量。这把我搞糊涂了。如果thread_local对于每个线程都是私有的,那么就不需要处理并发问题了,或者我对“私有”概念的认识是错误的?取自的示例#include <string>#include <mutex>
thread_local un