有没有办法从另一个线程更改一个线程的信号掩码? 我应该编写一个多线程 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/