我正在使用Tokio,希望能从两个不同的mpsc
队列中接收请求。看起来select!
是正确的方法,但我不确定futures::select!
和tokio::select!
之间有什么区别。在什么情况下应该使用其中一个而不是另一个?
我正在使用Tokio,希望能从两个不同的mpsc
队列中接收请求。看起来select!
是正确的方法,但我不确定futures::select!
和tokio::select!
之间有什么区别。在什么情况下应该使用其中一个而不是另一个?
tokio::select!
是基于对futures::select!
的经验构建的,但改进了一些内容以使其更加人性化。例如,futures-rs
版本的select!
要求Future
实现FusedFuture
,而Tokio的版本不再需要这个。
与此相反,Tokio的版本支持宏中的前提条件来涵盖相同的用例。
tokio repo中的PR对此进行了更详细的阐述。
这个变化也被建议应用于futures-rs版本,但迄今为止还没有在那里实现。
如果您的项目已经包含了Tokio,则使用Tokio的版本似乎更可取。但如果您没有并且不想添加额外的依赖关系,则futures-rs版本也可以几乎以相同的方式涵盖大多数用例。主要区别在于,有些Future
可能需要通过FutureExt::fuse()
扩展方法转换为FusedFuture
。