マルチスレッドのプログラミング

プロセスの作成: execexit の問題

exec(2)exit(2) は、次の点を除いて、シングルスレッドのプロセスの場合と変わりません。マルチスレッドアプリケーションでは、これらの関数は、アドレス空間内のすべてのスレッドを削除します。どちらのシステムコールも、スレッドを含むすべての実行リソースが削除されるまでブロック状態になります。

exec() は、プロセスを再構築するときに LWP を 1 つ生成します。()さらにプロセス起動時に初期スレッドを生成します。通常、初期スレッドが処理を終えると exit() を呼び出し、プロセスは削除されます。

プロセス内のすべてのスレッドが終了すると、そのプロセスも終了します。複数のスレッドをもつプロセスから exec() 関数が呼び出されると、すべてのスレッドが終了し、新しい実行可能イメージがロードされ実行されます。デストラクタ関数は呼び出されません。