asynchronous - future ::选择有什么区别!和 tokio::select?

标签 asynchronous rust rust-tokio

我正在使用 Tokio,我想接收来自两个不同的请求 mpsc队列。 select!似乎是要走的路,但我不确定 futures::select! 之间有什么区别和 tokio::select! .在哪种情况下,您应该使用一种而不是另一种?

最佳答案

tokio::select!建立在 futures::select! 的经验基础之上,但对其进行了一些改进以使其更符合人体工程学。例如。 futures-rs select! 的版本需要 Future s 实现 FusedFuture ,而 Tokio 的版本不再需要这个。
取而代之的是,Tokio 的版本支持宏中的先决条件以涵盖相同的用例。
PR in the tokio repo详细说明了这一点。
此更改也是 proposed for the futures-rs version ,但到目前为止尚未在那里实现。
如果您的项目中已经包含 Tokio,那么使用 Tokio 的版本似乎更可取。但是,如果您没有并且不想添加额外的依赖项,那么 futures-rs 版本也将以几乎相同的方式涵盖大多数用例。主要区别在于有些Future s 可能需要转换为 FusedFuture s 通过 FutureExt::fuse()扩展方法。

关于asynchronous - future ::选择有什么区别!和 tokio::select?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60811657/

相关文章:

javascript - Node JS 定时器 API 的执行顺序

rust - 为什么 Rust 不可变引用可以调用 &mut self 方法?

testing - 我如何在 Rust 中测试私有(private)方法?

asynchronous - 如何链接 tokio 阅读功能?

java - 在 WebSphere 8 上调用异步 servlet 导致 AsyncIllegalStateException

javascript - 为什么 setTimeout 延迟 0 仍然在 for 循环中的所有其他同步代码之后运行?

parallel-processing - Rust 如何处理分布式内存并行性?

rust - 类型不匹配解决从 future channel 转发消息到 WebSocket Sink 时的错误类型

rust - 无法 tokio::run 盒装 Future,因为不满足特征绑定(bind) Send

c# - 为什么我在 C# 中异步发送邮件后没有收到所有邮件?