繁体   English   中英

POSIX线程和信号掩码

[英]POSIX Threads and signal masks

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

因此看起来像这样:主线程将SIGUSR1发送到其进程,并且2个线程之一(不包括主线程)将响应该信号,并阻止SIGUSR1进入sigmask并进入睡眠状态。 然后主线程再次发送SIGUSR1,另一个线程将响应,从其sigmask阻止SIGUSR1,从其他线程sigmask取消阻止SIGUSR1,因此它将再次响应SIGUSR1。

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

有人可以帮忙吗?

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

线程只能修改自己的信号掩码(通过pthread_sigmask() )。 如果要修改另一个线程的信号掩码,则必须自己编写代码以要求另一个线程执行此操作。

信号被发送到此处的进程,因此kill()sigqueue()是要使用的函数。 后者将避免合并多个信号,而这可能会与kill()一起发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM