Есть ли разница между этими двумя сегментами кода:
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
}
Backstory: изначально у меня был вектор STATIC V (для хранения некоторых промежуточных значений, он очищается каждый раз при входе в функцию) и однопоточной программы. Я хочу превратить программу в многопоточную, поэтому мне нужно избавиться от этого статического модификатора. Моя идея - превратить все статические в thread_local и не беспокоиться ни о чем другом? Может ли этот подход получить обратный эффект?