我正在开发一个 C99 多线程 Linux 程序,并且我有几个运行第三方代码的线程。所以,我希望能够处理SIGSEGV以退出有问题的线程并让其他线程有机会很好地完成,最后退出程序。问题是 pthread_exit 不是异步信号安全的,我想知道这样做的正确方法是什么。
我不关心可移植性,因为它适用于 Linux 3.0+。
编辑:对不起,我确实写了 pthread_kill,但我的意思是 pthread_exit,因为 pthread_kill 只会发送另一个信号。
根据 Damon 的反馈更新:
我的意思是完美地等待其他线程完成它们的处理。然后退出整个过程。设置全局(静态 volatile sig_atomic_t g_quit)。但是,与此同时,我不希望生成 SIGSEGV 的线程继续其处理。