gpt4 book ai didi

c++ - 为什么我需要在多线程程序中使用 Pthread_sigmask 来确保设置处理程序正在处理信号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:57 33 4
gpt4 key购买 nike

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

最佳答案

Won't the signal be handled anyway when it is sent, regardless of which thread is processing at the given time instant?

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

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

关于c++ - 为什么我需要在多线程程序中使用 Pthread_sigmask 来确保设置处理程序正在处理信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026184/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com