再次解释wait_event_timeout

时间:2017-04-27 11:33:18

标签: linux-kernel synchronization

我正在查看wait_event_timeout宏(在wait.h中)并且无法理解它是否总是在返回之前检查条件。

是否可以保证,如果超时已经过期条件为真,则它永远不会返回零?

这个宏很难理解。也许我需要编写一个演示来证明这一点....任何人都可以提供一个简单而有说服力的例子吗?

- dd

1 个答案:

答案 0 :(得分:0)

答案似乎是这样的: html {height: 100%;} body{ background-color: #222222; font-family: 'PT Sans Narrow', sans-serif; } .wrapper { margin: 0 auto; width: 960px;/*1688px*/ height: 100%; background-color:#b3ffb3; } .rightColumn{ float: left; width: 70px; height: 100%; border: 1px sold gray; background-color:#fff; } /* This is the center column */ .centerBox{ float:left; width: 820px; height: 100%; border: 1px sold gray; background-color:#fff; overflow: hidden; 行为的关键变化发生在内核版本3.10周围。

在此更改之前,wait_event_timeout将返回0,如果事件从未发出信号,并且有必要手动重新检查条件,以防它以某种方式变为真(通过中断,另一个线程等等)上)。

在此版本之后,如果事件从未发出信号,wait_event_timeout将返回1,但指定的条件仍为真。 API会在超时到期后执行条件检查。

wait.h中此API的文档描述了自3.18版以来明确的新行为。

感谢所有有意帮助的人:) - dd