这两段代码是否有区别:
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,而不用担心其他任何事情?这种做法会适得其反吗?