线程可以不立即部署信号吗?

标签 c multithreading pthreads multiprocessing threadpool

想象一下,许多线程向一个线程发送信号(可能由pthread_kill创建)。但该线程无法立即部署它们。这些信号会丢失吗?如何解决这些从其他线程传递的信号? 有什么引用或经验吗?谢谢您的考虑。

最佳答案

是的,他们“迷失了”。信号不是排队的[1],它们只是一个被设置和清除的标志。因此,在第一个信号之后但在信号处理之前到达的多个信号没有任何效果。

解决方案是避免使用 unix 信号进行消息传递(实际上,对于大多数事情来说),而是使用其他信号,例如借助互斥体和条件变量通过内存进行通信。

[1] 有一些实时信号可以排队,至少在一定限制内,但它们也有自己的一系列问题。

关于线程可以不立即部署信号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863700/

相关文章:

并发加载和存储

c - 连续两次调用 getrusage 是否保证产生越来越多的结果?

c - snprintf,用于 C 中整数到字符串的转换

c - 如何用 gcc 捕获未定义的预处理器宏?

c++ - std::thread 被杀死后该怎么办?

c++ - 指向导致问题的 std::promise 的指针

c++ - boost 线程 : Use of deleted function Error

C:使用来自单独文件的函数

c - 简单的 C pthread 测试程序在执行期间挂起

multithreading - pthread_cond_wait 没有 while 循环