Linuxでは、メインスレッドが終了する方法に関係なく、exit()関数またはmainから戻ると、プロセス全体が終了します。メインスレッドがmain()から復帰すると、crt.oなどの「Cランタイム」に戻ります。 crt.oでは、次のようなCコードがあります。exit(main(argc、argv)); exit()はメインスレッド
によって呼び出され、結果としてすべてのスレッドが終了します。cプログラムでは、メインスレッドが終了するとプロセス全体が終了しますか?
私の考えは正しいようですか?
crt.o exit()が、void thread_exit(int)のようなスレッド終了関数(終了ステータスのスレッドのみを終了できる)に置き換えられた場合、crt.oのcソースコードはthread_exitのようですmain(argc、argv))、メインスレッド終了時に他のスレッドがまだ実行されていますか?
質問を書くよりも、テストプログラムを書くほうが速いと感じています:) – sarnold
@sarnold:テストプログラムを書くことは、まれにこのような質問に答える正しい方法ではありません。 –