当 Linux 上多线程应用程序中发生分段错误并调用处理程序时,所有其他线程在调用处理程序之前是否立即停止?那么,在分段错误处理期间不会执行任何 parralel 代码这一事实是否合适?谢谢。
从signal(7)
手册页:
可以为整个进程生成(并因此挂起)信号(例如,当使用 kill(2) 发送时)或特定线程(例如,由于执行特定机器语言指令而生成的某些信号,例如 SIGSEGV 和 SIGFPE)是线程定向的,使用 pthread_kill(3) 针对特定线程的信号也是如此)。进程导向信号可以传递到当前未阻塞信号的任何一个线程。如果多个线程的信号被解锁,则内核会选择一个任意线程来传递信号。
这一段说某些信号,如SIGSEGV
,是线程特定的。哪个应该回答你的问题。