这两个代码段之间是否有区别:
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
}
背景故事:最初我有一个静态向量 V(用于保存一些中间值,每次进入函数时都会被清除)和一个单线程程序。我想把程序变成一个多线程的程序,所以我必须以某种方式摆脱这个静态修饰符。我的想法是把每一个静态都变成thread_local,而不用担心别的?这种方法会适得其反吗?