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

特定のスレッドへのシグナルの送信

pthread_kill(3C) は、スレッド用の kill(2) です。pthread_kill() の呼び出しは、特定のスレッドにシグナルを送ります。特定のスレッドに送られるシグナルは、プロセスに送られるシグナルとは異なります。プロセスに送られたシグナルは、プロセス内のどのスレッドでも処理できます。pthread_kill() で送られたシグナルは、指定されたスレッドだけが処理できます。

pthread_kill() でシグナルを送ることができるのは、現在のプロセス内のスレッドに限られます。スレッド識別子 (thread_t 型) のスコープは局所的であるため、現在のプロセスのスコープにないスレッドは指定できません。

宛先スレッドでシグナルの受信時に行われる処理 (ハンドラ、SIG_DFL、または SIG_IGN) は、通常どおり大域的です。あるスレッドに、あるプロセスを終了させる SIGXXX を送信する場合、宛先スレッドがこのシグナルを受け取った時点でプロセス全体が終了します。