为什么需要像 Tokio 这样的异步运行时?

fin*_*ian 9 rust

我做计算机系统项目的第一次经历是使用普通 Java 构建服务器,然后在 Android 手机上构建客户端。从那时起,我发现有很多框架可以帮助管理可扩展性并消除编写样板代码的需要。

我试图了解TokioRayon等服务启用了哪些服务。

我在Tokio 教程页面上看到了这段文字,但我很难理解它

当您以异步方式编写应用程序时,可以通过降低同时执行许多操作的成本来使其能够更好地扩展。但是,异步 Rust 代码不会自行运行,因此您必须选择一个运行时来执行它。

我首先认为“运行时”可能指的是二进制文件可以运行的地方,但看起来 Tokio 只提供了 Rust 标准库中已有的函数,而 Rayon 实现了标准库中没有的函数。

标准库中异步函数的标准实现是否编写得不好,或者我不理解 Tokio 提供的服务?

Rob*_*ier 11

Rust 目前在标准库中不提供异步运行时。有关完整详细信息,请参阅Rust 中的异步编程,特别是“异步生态系统”一章。

Rust 目前仅提供编写异步代码的基本要素。重要的是,标准库中尚未提供执行器、任务、反应器、组合器以及低级 I/O 未来和特征。与此同时,社区提供的异步生态系统填补了这些空白。

Rust 有非常严格的向后兼容性要求,并且他们没有选择锁定特定的运行时。选择其中之一是有原因的(例如功能与大小),并且将其作为标准库的一部分会强加某些选择,而这些选择显然并不适合所有项目。随着社区项目更好地探索这个空间并帮助确定最佳的选择组合,而无需强大的向后兼容性承诺,这种情况将来可能会发生变化。