2

私が正しければ、std :: asyncは新しいスレッドを使用し、その中のメソッドを呼び出します。メインスレッドまたは親スレッドが停止するとどうなるのだろうかと思っていました。asyncメソッドを制御しているスレッドも停止しますか?

4

1 に答える 1

7

C ++には「親」スレッドの概念はなく、各スレッドはそれが作成されたスレッドから独立しています。ただし、mainスレッドは特殊であり、スレッドがから戻っmain()たり呼び出したりするとexit()、他のスレッドがまだ実行されている場合でも、アプリケーション全体が終了します。それが発生すると、まだ実行中のスレッドがメインスレッドのスタックにあるグローバル変数または自動オブジェクトにアクセスするか、標準ライブラリオブジェクトを使用するか、シグナルハンドラーで許可されていない関数を呼び出すと、プログラムの動作は未定義になります。

mainつまり、賢明な結果が期待できる場合は、完了後に他のスレッドを実行させないでください。

于 2013-01-07T20:23:05.000 に答える