ある時点で、main()の最初の行までスレッドを安全に作成できないことを読んだことを覚えています。これは、コンパイラが特別なコードを挿入して、静的初期化時に実行されるスレッドを機能させるためです。したがって、構築時にスレッドを作成するグローバルオブジェクトがある場合、プログラムがクラッシュする可能性があります。しかし、今は元の記事を見つけることができず、これがどれほど強い制限であるのか興味があります-それは標準によって厳密に真実ですか?ほとんどのコンパイラに当てはまりますか?それはC++0xでも当てはまりますか?標準に準拠したコンパイラが静的初期化自体をマルチスレッド化することは可能ですか?(たとえば、2つのグローバルオブジェクトが互いに接触していないことを検出し、プログラムの起動を高速化するためにそれらを別々のスレッドで初期化します)
編集:明確にするために、私は少なくとも、実装がこの点で本当に大幅に異なるかどうか、またはそれが疑似標準であるかどうかを感じ取ろうとしています。たとえば、技術的には、この標準では、さまざまなアクセス指定子(public / protected / etc。)に属するメンバーのレイアウトをシャッフルできます。しかし、私が知っているコンパイラは実際にこれを行いません。