切り離されたスレッドと Main() Exit の結果
切り離されたスレッドが起動され、制御 std の後に実行を継続するシナリオを考えてみましょう。 ::thread オブジェクトがスコープ外になります。この主題に関する標準の潜在的な沈黙が懸念を引き起こしました: main() 関数が終了すると切り離されたスレッドはどうなるのですか?
未定義の動作または定義された効果?
標準には、この問題に関する明確なガイドラインがありません。ただし、元の質問への回答では次のように説明されています。
デタッチされたスレッドとシグナル ハンドラーの結合
2 番目の質問に対処すると、応答では、デタッチされたスレッドは *_at_thread_exit 関数ファミリーを介して結合できると主張しています。 。これらの関数を使用すると、すべてのデストラクターが確実に呼び出されていることを確認しながら、スレッドの実行の完了を通知できます。
ただし、条件変数またはセマフォのみを使用するだけでは、信頼性の高い結合を実現するには不十分です。この標準では、実装で明示的に許可されていない限り、条件変数の使用を除いて、シグナル処理中のコード実行に制限が適用されます。
プログラムの動作に対する結果
これらを踏まえると観察によると、 main() 終了時のスレッド動作に対する標準の制約により、特定のアクションが規定されます。開発者:
以上が「main()」関数が終了すると、切り離されたスレッドはどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。