ある時点では、静的初期化時に実行されるスレッド処理を行うためにコンパイラが特別なコードを挿入するため、main()の最初の行までスレッドを安全に作成できないことを覚えています。したがって、構築時にスレッドを作成するグローバルオブジェクトがあると、プログラムがクラッシュする可能性があります。しかし今、私は元の記事を見つけることができません、そして、私は、これがどれほど強い制限であるのが好奇妙ですか?それは標準によって厳密に真実ですか?ほとんどのコンパイラに当てはまりますか?それは本当ですか? をスタティック初期化そのものにすることは可能ですか?マルチスレッド? (例えば、2つのグローバルオブジェクトが互いに接触しないことを検出し、プログラムの起動を加速するためにそれらを別々のスレッドで初期化する)スタティック初期化中にスレッドを安全に作成できますか?
編集:明確にするために、実装が本当に大きく異なっているかこの点で、あるいはそれが疑似標準であるかどうかを判断する必要があります。たとえば、技術的には、異なるアクセス指定子(public/protected/etc)に属するメンバーのレイアウトをシャッフルすることが技術的に可能です。しかし、私が知っているコンパイラは実際にはこれを行いません。
"標準で厳密に真です" - C++ 03標準ではスレッドの主題について何も言及していません。現在の動作に関する限り、POSIX(*標準*、*標準)、MSDN、Boost、またはその他のコンパイラ、プラットフォーム、スレッドAPI用の実装固有のドキュメントがあります。つかいます。 –