c++ - 是否明确定义了哪个线程调用 thread_local 存储的构造函数?
问题描述
c++ 标准是否定义了如何、何时以及由哪个线程调用 thread_local 变量的构造函数?例如,是否总是为其分配 thread_local 数据的线程本身?或者也许它是产生新线程的线程?还是进程的第一个线程?还是取决于编译器?
解决方案
[basic.start.dynamic] 具有线程存储持续时间的非局部非内联变量的动态初始化是在线程的初始函数的第一条语句之前排序还是延迟,由实现定义。如果延迟,则与线程t的实体相关联的初始化在第一次非初始化 odr 使用之前被排序,任何非内联变量的线程存储持续时间在与要初始化的变量相同的翻译单元中定义。它是实现定义的,在哪些线程和程序中的哪些点发生这种延迟的动态初始化。
推荐阅读
- python - Selenium 在无头模式下单击
- javascript - 将文件读入 Node.js 中的特定内存块
- reactjs - 我想找到文件夹的路径
- docker - 带有 Harbour Registry 的 CI/CD Gitlab
- elasticsearch - 如果数据已经被elasticsearch索引了,删除原始数据好不好?
- c++ - 在 Windows GINA DLL 中启用主题
- apache - 用于 websockets 的 Apache 反向代理
- java - 循环仅在中途开始填充数组
- rsync - 如何通过互联网快速传输文件?
- python - Python中matplotlib的matshow()是什么