c - POSIX 线程和信号掩码

标签 c multithreading signals posix mask

有没有办法从另一个线程更改一个线程的信号掩码? 我应该编写一个多线程 C 应用程序,它不使用互斥量、信号量和条件变量,只使用信号。

所以它看起来像这样: 主线程将 SIGUSR1 发送到它的进程,并且 2 个线程之一(不包括主线程)将响应信号并从 sigmask 和 sleep 中阻止 SIGUSR1。然后主线程再次发送SIGUSR1,另一个线程会响应,从它的sigmask中阻塞SIGUSR1,从其他线程sigmask中解除对SIGUSR1的阻塞,所以它会再次响应SIGUSR1。

所以基本上每当主线程发送 SIGUSR1 时,其他两个线程就会相互交换。

有人可以帮忙吗?

最佳答案

您可能正在寻找 pthread_sigqueue(3)从主线程调用,sigwait(3)sigtimedwait(2)在子线程中。

关于c - POSIX 线程和信号掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13113885/

相关文章:

c - 我无法让我的C程序输出到文件

c - 奇怪的 gcc 错误杂散/缺少终止“C 中的字符

ios - 核心数据持久存储异步保存

c# - 多个用户写入同一个文件

uml - 我们如何在 UML 事件图中建模发送 HTTP 请求

c - 递归最小函数

java - SIGSEGV Android JNI 空方法

java - 这段代码代表了多线程服务器的实现?

ios - 应用程序在iPhone 5上运行但在iPhone 4s上未运行,但出现错误SIGABRT

c - 为什么信号处理程序仅适用于我的第一个 ctrl + c?