Linux - c - 没有上下文切换和低开销的 ipc 通知?
Linux - c - ipc notification without context switch and low overhead?
上下文:
Linux 64 位。
我非常精通共享内存,不同的IPC机制。
目前,我正在寻找可以在用户空间中使用的东西来通知两个轮询进程之间的变化,以节省 cpu 周期。
我已经知道 futexes
、eventfd
、慢 signals
甚至 char devices
。
但我担心涉及的延迟。
问题:
我想要一种非常轻量级的方式来在用户空间中的两个进程之间进行通知,如果可能的话没有上下文切换,并且延迟非常低(最大值或大约 µs 数量级).
没有主要限制:没有竞争条件预防,不需要锁定,但是没有请忙着等待(我管理匆忙和节奏已经很慢了,忙碌的等待会严重欺骗长 运行) 上的任何优化。
如果 mmap 可以在没有 msync() 的情况下通知更改...我就不会问了。
你的工具箱里有什么想法吗?
谢谢
想法:
问完之后,可能会有一个想法:将文件放入 tmpfs 并对其进行轮询...我希望延迟很低,但我不太确定..
终于走上eventfd路线了;
未修改的gnu/linux.
无法完成我想做的事
为了满足 Nominal Animal 胃口:上下文切换在我问的问题中很重要。因为没有它就无法完成,所以没有其他方法可以按照我想要的方式完成工作。
所以我会继续使用 eventfd 和其他传统工具。
解决方案是彻底改变逻辑;忘记投票和所有这些大惊小怪。
繁忙的轮询将是没有 ops 组装操作的方式。
上下文:
Linux 64 位。
我非常精通共享内存,不同的IPC机制。
目前,我正在寻找可以在用户空间中使用的东西来通知两个轮询进程之间的变化,以节省 cpu 周期。
我已经知道 futexes
、eventfd
、慢 signals
甚至 char devices
。
但我担心涉及的延迟。
问题:
我想要一种非常轻量级的方式来在用户空间中的两个进程之间进行通知,如果可能的话没有上下文切换,并且延迟非常低(最大值或大约 µs 数量级).
没有主要限制:没有竞争条件预防,不需要锁定,但是没有请忙着等待(我管理匆忙和节奏已经很慢了,忙碌的等待会严重欺骗长 运行) 上的任何优化。
如果 mmap 可以在没有 msync() 的情况下通知更改...我就不会问了。
你的工具箱里有什么想法吗?
谢谢
想法:
问完之后,可能会有一个想法:将文件放入 tmpfs 并对其进行轮询...我希望延迟很低,但我不太确定..
终于走上eventfd路线了;
未修改的gnu/linux.
无法完成我想做的事为了满足 Nominal Animal 胃口:上下文切换在我问的问题中很重要。因为没有它就无法完成,所以没有其他方法可以按照我想要的方式完成工作。
所以我会继续使用 eventfd 和其他传统工具。
解决方案是彻底改变逻辑;忘记投票和所有这些大惊小怪。
繁忙的轮询将是没有 ops 组装操作的方式。