我特别打算使用这两种语言的通道功能来开发可扩展的 Web 服务。我目前不清楚哪一个更容易实现,但哪个更适合预期设计,有助于维持正常运行时间,需要最小的开销等。我知道 Go 实现使用 CSP 方法,尽管我不清楚究竟是什么Rust 实现基于以及是否类似于 Go 版本。
是否有任何相似之处,或者它们是否太不同而无法相互比较?是否存在两种实现方式基本相同的用例?
没有 Rust 通道这样的东西。
在 Go 中,通道是 Go 运行时提供的语言概念,而在 Rust 中,通道可以在库中实现,因此通道实现与库一样多,每个都有不同的目标和权衡:
标准库中有一个 MPSC (Multi-Producer, Single-Consumer) 通道。
在crossbeam 生态系统和async-std crate 1中有 MPMC(多生产者,多消费者)通道。
所有这些实现都提供了不同的接口、功能和性能权衡。
1 不是官方 crate,std
只是async
.