繁体   English   中英

为什么需要在多线程程序中使用Pthread_sigmask来确保set处理程序正在处理信号?

[英]Why do I need to use Pthread_sigmask in multithreaded programs to assure that a signal is being handled by the set handler?

我有一个多线程程序,该程序需要每25ms处理一次setitimer()发送的Linux信号SIGVTALRM。 但是我很困惑。 我不知道为什么需要使用Pthread_sigmask()来阻止和取消阻止信号。 无论在给定的时刻正在处理哪个线程,发送信号时都不会处理信号吗?

无论在给定的时刻正在处理哪个线程,发送信号时都不会处理信号吗?

在单线程程序中,可以。 但是在多线程程序中,POSIX没有指定哪个线程将接收您发送的信号SIGVTALRM 因此, pthread_sigmask()通常用于阻止感兴趣的信号并处理在专用线程中提取那些信号sigwait() 这可能是您使用或要求使用pthread_sigmask()

链接的POSIX手册还提供了一个简单的示例,说明了如何完成此操作。

暂无
暂无

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

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