- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 this paragraph ,以下有问题:
/* usr_interrupt is set by the signal handler. */
if (!usr_interrupt)
pause ();
/* Do work once the signal arrives. */
...
并且应该使用
sigsuspend
反而。
pause
有什么问题以及如何
sigsuspend
解决它,
最佳答案
让我们检查在您检查后信号到达时会发生什么usr_interrupt
但在您调用之前pause
:
主线程信号处理程序
----------- --------------
如果(!usr_interrupt)
//这是真的//信号启动处理程序
usr_interrupt = 1;
//处理程序完成
暂停();
//将等待信号
在这种情况下,您可以看到您错过了信号。如果没有进一步的信号传入,这一点非常重要,因为您的程序永远不会对其进行操作。这就是所谓的竞态条件。现在让我们看看 sigsuspend
会发生什么:
主线程信号处理程序
----------- --------------
//设置延迟信号。
sigemptyset (&mask);
sigaddset (&mask, SIGUSR1);
//这将延迟(阻塞)信号。
//如果 USR1,可能首先执行此操作
//可能已经被阻止(检查!):
//sigprocmask (SIG_UNBLOCK, &mask, &old);
sigprocmask (SIG_BLOCK, &mask, &old);
如果(!usr_interrupt)
//信号到达,延迟。
//解除阻塞信号/等待(原子地)。
sigsuspend (&old);
//延迟处理程序启动。
usr_interrupt = 1;
//处理程序完成。
//sigsuspend 返回,清理。
sigprocmask (SIG_UNBLOCK, &mask, NULL);
在这种情况下,没有竞争条件,因为信号被延迟到主线程准备好。
关于signals - pause() 到底有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328055/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!