这两个代码段之间是否存在差异:
void f() {
thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
Run Code Online (Sandbox Code Playgroud)
和
void f() {
static thread_local vector<int> V;
V.clear();
... // use V as a temporary variable
}
Run Code Online (Sandbox Code Playgroud)
Backstory:最初我有一个STATIC向量V(用于保存一些中间值,每次进入函数时都会被清除)和一个单线程程序.我想把程序变成多线程程序,所以我不得不摆脱这个静态修饰符.我的想法是将每个静态转换为thread_local并且不担心其他任何事情?这可能会适得其反吗?