[basic.stc.thread] гласит, что «переменная с продолжительностью хранения потока должна быть инициализирована до ее первого использования odr (6.2) и, если она создана, должна быть уничтожена при выходе из потока».
Разве это исключает реализацию, инициализирующую переменную области имен thread_local
с нетерпением при создании потока, и поддерживают ли какие-либо крупные компиляторы какой-либо механизм, чтобы принудительно сделать это через некоторую аннотацию?
У меня оченьнебольшое количество критичных к производительности __thread
переменных. Я бы хотел не использовать ленивые проверки инициализации для каждого доступа, которые обычно выполняются thread_local
, но в настоящее время мне нужно выполнить настройку / разборку через отдельные вызовы, чтобы остаться в пределах __thread
ограничения на нетривиальные деструкторы и т. д. Могу ли я получить thread_local
с гарантированной энергичной конструкцией / разрушением для каждого потока и без ленивого тестирования инициализации?
В противном случае, каков самый чистый из известных шаблонов для работы с __thread
настройка / отмена регистрации звонка?