Mediumthread-localc++11
Что такое thread-local storage (thread_local)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
thread_local (C++11) — спецификатор для переменных, у каждого потока своя копия. Изменения не видны другим потокам.
thread_local int counter = 0; // своя копия на поток
void f() {
thread_local std::string cache; // инициализируется при первом вызове в потоке
++counter;
cache += "x";
// после завершения потока cache уничтожается
}Бывает для глобальных, static-членов и static-локальных. Каждый поток инициализирует свою копию лениво. Применения: errno, rand state, локальные кэши, connection pools per-thread.
Минусы: overhead при доступе (через TLS-механизм ОС, медленнее обычного global), сложнее тестирование.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.