【发布时间】:2023-03-28 12:09:01
【问题描述】:
我有一个 SIGABRT 的信号处理程序,当收到信号时,我需要更多时间让其他线程正常退出。然后我将在信号处理程序中执行 _exit() 以退出整个过程。
但我不确定如何在信号处理程序中等待。我认为在信号处理程序中使用睡眠有一些限制。我不想使用忙等待。
有人建议有什么想法吗?
【问题讨论】:
我有一个 SIGABRT 的信号处理程序,当收到信号时,我需要更多时间让其他线程正常退出。然后我将在信号处理程序中执行 _exit() 以退出整个过程。
但我不确定如何在信号处理程序中等待。我认为在信号处理程序中使用睡眠有一些限制。我不想使用忙等待。
有人建议有什么想法吗?
【问题讨论】:
您可以在信号处理程序中执行何种代码没有任何限制。您只需要记住,在执行信号处理程序时可能会到达另一个信号,从而使您处于一半完成的函数、锁定的互斥锁或其他最好保持不间断的事情的中间。
通常,您会让信号处理程序设置一个标志,向所有线程发出信号以正常退出,从信号处理程序返回,然后让您的代码正常退出。
【讨论】: