切り離された pthread が死ぬことはありますか? メイン プロセスを停止せずに OS によってスレッドを強制終了できますか?
1 に答える
切り離されたスレッドがその作業を行った後に終了するようにプログラムすると、そのスレッドは終了します。その作業を終了した後、関数は単純に終了または呼び出しできますpthread_exit
。
pthread_kill
グローバルフラグまたはパイプやメッセージキューなどの IPC の形式を使用してシグナルを送信することにより、別のスレッドから切り離されたスレッドを強制終了できます。「殺された」という言葉は、英語とプログラミングの両方で複数の意味があいまいであることに注意してください。スレッドは、使用される通知メカニズムに反応するようにプログラムする必要があります。たとえば、シグナル ハンドラーをスレッド用にインストールし、 SIGUSR1 などの非プロセス全体のシグナルをpthread_kill
またはで送信する必要がありpthread_sigqueue
ます。pthread_cancel
最後に、pthreads には、使用および関連する呼び出しを使用できるキャンセル メカニズムがあります。これらすべてのシナリオで重要なのは、正常に終了する要求を処理するようにスレッドをプログラムする必要があるということですが、「切り離された」ということは「アクセスできない」という意味ではありません。
シグナルの処理が停止、継続、または終了の場合、単一のスレッドではなくプロセス全体に影響します。