首页 > 解决方案 > 是否明确定义了哪个线程调用 thread_local 存储的构造函数?

问题描述

c++ 标准是否定义了如何、何时以及由哪个线程调用 thread_local 变量的构造函数?例如,是否总是为其分配 thread_local 数据的线程本身?或者也许它是产生新线程的线程?还是进程的第一个线程?还是取决于编译器?

标签: c++multithreadinglanguage-lawyer

解决方案


[basic.start.dynamic] 具有线程存储持续时间的非局部非内联变量的动态初始化是在线程的初始函数的第一条语句之前排序还是延迟,由实现定义。如果延迟,则与线程t的实体相关联的初始化在第一次非初始化 odr 使用之前被排序任何非内联变量的线程存储持续时间在与要初始化的变量相同的翻译单元中定义。它是实现定义的,在哪些线程和程序中的哪些点发生这种延迟的动态初始化


推荐阅读