想象一下,许多线程向一个线程发送信号(可能由pthread_kill
创建)。但该线程无法立即部署它们。这些信号会丢失吗?如何解决这些从其他线程传递的信号?
有什么引用或经验吗?谢谢您的考虑。
最佳答案
是的,他们“迷失了”。信号不是排队的[1],它们只是一个被设置和清除的标志。因此,在第一个信号之后但在信号处理之前到达的多个信号没有任何效果。
解决方案是避免使用 unix 信号进行消息传递(实际上,对于大多数事情来说),而是使用其他信号,例如借助互斥体和条件变量通过内存进行通信。
[1] 有一些实时信号可以排队,至少在一定限制内,但它们也有自己的一系列问题。
关于线程可以不立即部署信号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863700/