3个版本 (破坏性更新)
0.3.0 | 2022年11月22日 |
---|---|
0.2.0 | 2021年2月16日 |
0.1.0 | 2021年2月8日 |
在 内存管理 中排名第356
34KB
511 行
在Linux上实现最高性能和最低延迟的不可信IPC。
何时使用这个Rust crate?
- 性能或延迟至关重要,且
- 您运行Linux。
一个典型用例可能是音频/视频流。
不需要最高性能和最低延迟,并希望有一个具有序列化和许多内置功能的更高级协议?尝试D-Bus。
此外,设置unix套接字更容易,并且并不慢多少(见下文基准测试)。
对于Linux,此crate使用memfd密封来确保不可信进程之间的安全性,并使用eventfd进行ringbuffer信号处理以实现最佳性能。这两个特性是Linux特有的。
入门
您可能想从sharedring
模块开始,该模块在不可信进程之间设置ringbuffer(它是一个无等待/无锁、有界、SPSC队列)。另一个有用的函数是mem::write_once
,用于一次写入数据并在之后使其可供读取的场景。`mem`和`ringbuf`模块包含可能在其他用例中有用的构建块。
使用基于memfd的共享内存的缺点是您需要通过传输文件描述符、使用其他通信方式来设置它。使用D-Bus将是做这件事的标准方式——使用unix套接字也是可能的。
在examples
目录中还有一个客户端/服务器示例,可以帮助您入门。祝您玩得开心!
基准测试
注意对数刻度:对于64K数据包,sharedring比unix套接字快三倍,比D-Bus快六十倍。(D-Bus是一个更高级的协议,因此这种比较在某种程度上是在比较苹果和橘子。)
许可
代码是Apache 2.0 / MIT双许可。除非明确说明,否则假设所有通过Pull Requests、讨论或问题提交的代码都拥有此许可。
依赖项
~2.5MB
~52K SLoC