为什么epoll_wait只提供超长的1ms超时?
发布时间:2020-12-15 05:07:33 所属栏目:Java 来源:网络整理
导读:epoll_wait,select和poll函数都提供超时.然而对于epoll,它的分辨率为1ms.选择 ppoll是唯一一个提供亚毫秒超时的产品. 这意味着最好以1毫秒的间隔做其他事情.在现代CPU上,我可以在1ms内做很多其他事情. 所以要经常做1ms以上的其他事情我实际上必须提供零超时(
epoll_wait,select和poll函数都提供超时.然而对于epoll,它的分辨率为1ms.选择& ppoll是唯一一个提供亚毫秒超时的产品.
这意味着最好以1毫秒的间隔做其他事情.在现代CPU上,我可以在1ms内做很多其他事情. 所以要经常做1ms以上的其他事情我实际上必须提供零超时(基本上禁用它).而且我可能会在主循环中的某处添加我自己的睡眠以阻止它咀嚼过多的CPU. 所以问题是,当我认为有更高分辨率超时的情况时,为什么以毫秒为单位的超时. 解决方法
由于您使用的是
Linux,因此您可以简单地使用
timerfd API,而不是提供零超时值并在循环体中手动操作.这实际上允许您创建与文件描述符关联的计时器(分辨率小于1ms),您可以将其添加到受监视的描述符集.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |