Linux 64bits。
我非常精通共享记忆,不同的IPC机制。
目前,我正在寻找可以在用户空间中使用的东西来通知两个轮询进程之间的更改,以节省cpu周期。
我已经了解futexes
,eventfd
,慢signals
甚至char devices
。
但我担心所涉及的延迟。
我想要一种非常轻量级的方式来通知用户空间中的两个进程,如果可能的话没有上下文切换,并且延迟非常低(μs数量级或最大值)。
没有主要限制:没有竞赛条件预防,不需要锁定,但是 没有 请忙着等待(我已经管理了仓促和缓慢的节奏,并且忙着等待从长远来看会严重欺骗任何优化。
如果mmap可以在没有msync()的情况下通知更改......我不会问。
您的工具箱中有什么想法吗?
由于
在询问之后,可能会提出一个想法:将文件放入tmpfs并进行轮询...我希望延迟相当低,但我不太确定..
答案 0 :(得分:0)
我终于走了eventfd路线;
我希望在未经修改的gnu / linux中无法完成。
满足Nominal Animal的胃口:上下文切换在我问的问题中很重要。因为没有它就无法完成,没有其他方法可以按照我想要的方式完成工作。
所以我将继续使用eventfd和其他传统工具。
答案 1 :(得分:0)
解决方案是逻辑的彻底改变;忘掉民意调查和所有这些大惊小怪。
忙碌的民意调查将是没有操作装配操作的方法。