我正在使用 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/