这两个代码段之间是否有区别:
void f() {
thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
和
void f() {
static thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
背景知识:最初,我有一个STATIC向量V(用于保存一些中间值,每次输入函数时都会清除它)和一个单线程程序。我想将程序变成一个多线程程序,因此我必须摆脱这种静态修饰符。我的想法是将每个静态变量都转换为thread_local,而不用担心其他事情?这种做法会适得其反吗?
thread_local
局部变量是没有意义的开始......每个线程都有自己的调用堆栈。