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

同期シグナル

SIGILLSIGFPESIGSEGV などのトラップは、スレッド上でゼロ除算や存在しないメモリーの参照などの操作が行われたときに発生します。トラップは、そのトラップを発生させたスレッドだけが処理します。プロセス内の複数のスレッドが、同じ種類のトラップを同時に発生させて処理することもできます。

同期シグナルに関しては、シグナルの概念を個々のスレッドに簡単に拡張できます。ハンドラは、同期シグナルを生成したスレッド上で起動します。

しかし、適切なシグナルハンドラが設定されていない場合、そのプロセスはトラップに対してデフォルトの処理を実行します。デフォルトの処理は、問題を起こしたスレッドが生成されたシグナル上でブロックされた場合も適用されます。このようなシグナルのデフォルトの処理では、プロセスの終了に通常コアダンプを伴います。

こうした同期シグナルは、通常、特定のスレッドだけでなくプロセス全体に悪影響を及ぼすような重大な事態を表します。このような場合には通常、プロセスを終了するのが適切です。