C++ 为什么我需要在多线程程序中使用Pthread_sigmask来确保set处理程序正在处理信号?
我有一个多线程程序,它需要处理setitimer()每隔25毫秒发送的Linux信号SIGVTALRM。然而,我感到困惑。我不知道为什么需要使用Pthread_sigmask()来阻止和解除阻止信号。不管在给定的时刻哪个线程在处理信号,发送信号时不会处理它吗 不管在给定的时刻哪个线程在处理信号,发送信号时不会处理它吗 在单线程程序中,是的。但是在多线程程序中,POSIX没有指定哪个线程将接收您发送的信号。因此,通常用于阻止感兴趣的信号,并在专用线程中处理获取这些信号。这可能就是您正在使用或被要求使用C++ 为什么我需要在多线程程序中使用Pthread_sigmask来确保set处理程序正在处理信号?,c++,c,linux,multithreading,signals,C++,C,Linux,Multithreading,Signals,我有一个多线程程序,它需要处理setitimer()每隔25毫秒发送的Linux信号SIGVTALRM。然而,我感到困惑。我不知道为什么需要使用Pthread_sigmask()来阻止和解除阻止信号。不管在给定的时刻哪个线程在处理信号,发送信号时不会处理它吗 不管在给定的时刻哪个线程在处理信号,发送信号时不会处理它吗 在单线程程序中,是的。但是在多线程程序中,POSIX没有指定哪个线程将接收您发送的信号。因此,通常用于阻止感兴趣的信号,并在专用线程中处理获取这些信号。这可能就是您正在使用或被要求
pthread\u sigmask()
的原因
链接的POSIX手册还提供了一个简单的示例,说明了如何做到这一点。您能提供一个示例来说明您在说什么吗?谢谢您的回复!如果我在主线程中设置一个计时器,然后创建线程,那么如何决定哪个线程应该处理它呢?常用的方法是创建一个专用线程。查看哪里可以找到完整的示例。@lukecam95通过此线程了解pthread_sigmask的工作原理。