マルチスレッド アプリケーション内の Linux でセグメンテーション違反が発生し、ハンドラーが呼び出されると、ハンドラーが呼び出される前に他のすべてのスレッドが即座に停止しますか? では、セグメンテーション違反の処理中に並列コードが実行されないという事実に頼るのは適切でしょうか? ありがとうございました。
質問する
647 次
1 に答える
0
signal(7)
マニュアルページから:
シグナルは、プロセス全体 (たとえば、kill(2) を使用して送信される場合) または特定のスレッド (たとえば、実行の結果として生成される SIGSEGV や SIGFPE などの特定のシグナル) に対して生成される (したがって保留中) 場合があります。特定の機械語命令は、pthread_kill(3) を使用して特定のスレッドを対象とするシグナルと同様に、スレッド向けです)。プロセス向けシグナルは、現在シグナルがブロックされていないスレッドのいずれかに配信される可能性があります。複数のスレッドでシグナルのブロックが解除されている場合、カーネルはシグナルを配信する任意のスレッドを選択します。
この段落では、 のような特定のシグナルSIGSEGV
がスレッド固有であると述べています。あなたの質問に答えるはずです。
于 2012-08-13T16:18:12.760 に答える