Являются ли переменные thread_local в C ++ 11 автоматически статическими?
Есть ли разница между этими двумя сегментами кода:
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 и не беспокоиться ни о чем другом? Может ли такой подход иметь неприятные последствия?