【发布时间】:2017-04-16 01:44:24
【问题描述】:
引用http://man7.org/linux/man-pages/man3/pthread_sigmask.3.html程序源部分下提供的代码。
对该代码的更改是:1) SIGVTALRM 被阻止而不是 SIGQUIT 和 SIGUSR1,2) 使用 @987654325 设置了一个计时器@在评论部分之后(/* Main thread carries on to create other threads and/or do other work */)。
如果我们使用pause(2)(如示例代码中的情况)或sigwait(3),则SIGVTALRM 以外的信号似乎得到了正确处理(例如SIGINT,甚至SIGALRM)。 SIGVTALRM 仅在使用 while(1); 的主线程忙等待时正确处理(替换示例代码中的 pause();)。
看起来ITIMER_VIRTUAL 根本没有递减(请注意,这只是我的怀疑)。为什么会这样?有没有办法在仍然使用计时器的同时解决这个问题?
【问题讨论】:
标签: c multithreading timer signals posix