我正在尝试在 SIGSEGV 上实现一个处理程序,它将收集一些信息,例如进程 ID、线程 ID 和回溯,并将这些信息写入文件/管道/套接字。
问题在于,如果一个线程经历了 SIGSEGV,那么其他线程将很快跟进的可能性(可能相当高)。如果两个线程碰巧到达了他们同时写出报告的代码位,那么他们将交错写入(到同一个文件)。
我知道我应该只使用 async-signal-safe 功能,如我在此处signal(7)
看到的至少两个案例和此处的最佳答案中链接的视频,其他人曾经解决此问题。pthread_spin_trylock
这是防止上述问题的安全方法吗?