在某些时候,我记得读到在 main() 的第一行之前无法安全地创建线程,因为编译器插入特殊代码以使线程在静态初始化期间运行。因此,如果您有一个在构造时创建线程的全局对象,您的程序可能会崩溃。但是现在我找不到原始文章了,我很好奇这是一个多么严格的限制——按标准严格来说是真的吗?大多数编译器都是这样吗?在 C++0x 中它会保持不变吗?符合标准的编译器是否可以使静态初始化本身成为多线程的?(例如检测两个全局对象不相互接触,并在单独的线程上初始化它们以加速程序启动)
编辑:为了澄清,我试图至少了解实现在这方面是否真的有很大差异,或者它是否是伪标准的东西。例如,从技术上讲,该标准允许改组属于不同访问说明符(公共/受保护/等)的成员的布局。但是我所知道的编译器实际上没有这样做。