3 个不稳定版本

0.2.0 2024年7月2日
0.1.1 2024年6月28日
0.1.0 2024年6月28日

#133FFI

Download history 186/week @ 2024-06-25 209/week @ 2024-07-02

每月82 次下载
rust2go-mem-ffi 中使用

MIT/Apache

41KB
1K SLoC

Rust 843 SLoC // 0.0% comments Go 351 SLoC // 0.0% comments

Mem Ring

基于共享内存桥接 rust 和 go 的环形队列。它支持 tokio 和 monoio 运行时。

使用 2 个环形队列,用户可以模拟 rust 和 go 之间的调用(双方都可以发起调用)。

工作原理

待办事项

如何为 Rust 选择模式

对于 Tokio 用户

[dependencies]
mem-ring = { version = "0.1", default-features = false, features = ["tokio"] }

对于 Monoio 用户

  1. 在线程间共享全局队列(不启用 tpc):聚合效果会更好,系统调用触发次数会更少。但是,每个消费者都必须获取锁,这将会引入竞争。此外,由于每个队列只能有一个消费者,性能将限制在单个线程上。然而,您可以通过手动调度任务到其他工作者来使其能够支持更高的吞吐量(当然,您必须为跨线程通信付费)。
  2. 为每个线程使用单独的队列(启用 tpc 可以提高此模式下的性能):每个线程都有自己的队列,可以独立消费或生产。但是,聚合效果会更差,系统调用次数会增加。

如果您使用 monoio,我建议使用第二种模式,这是默认功能。

[dependencies]
mem-ring = { version = "0.1" }

依赖项

~4–14MB
~157K SLoC