Overview

未匹配的标注

原文链接:tokio.rs/tokio/tutorial

教程

Tokio 是 Rust 编程语言的异步运行时。它提供了编写网络应用进程所需的构建块。它提供了针对各种系统的灵活性,从具有数十个内核的大型服务器到小型嵌入式设备。

在高层次上,Tokio 提供了几个主要组件:

  • 用于执行异步代码的多线程运行时。
  • 标准库的异步版本。
  • 一个大型的生态库。

Tokio 在你的项目中扮演的角色

以异步方式编写应用进程时,可以通过同时降低多个执行操作的成本来使其更好地扩展。但是,异步 Rust 代码不会自行运行,因此您必须选择一个运行时来执行它。Tokio 库是使用最广泛的运行时,超过了所有其他运行时的总和。

此外,Tokio 还提供了许多有用的实用程序。在编写异步代码时,你不能使用 Rust 标准库提供的普通阻塞 API,而必须使用它们的异步版本。这些替代版本由 Tokio 提供,替代了 Rust 标准库的 API。

Tokio 的优势

本节将概述 Tokio 的一些优点。

Tokio 很快,建立在 Rust 编程语言之上,它本身就很快。这是本着 Rust 的精神完成的,目标是你不应该能够通过手动编写等效的代码来提高性能。

Tokio 是可扩展的,建立在 async/await 语言功能之上,该功能本身是可扩展的。在处理网络时,由于延迟,处理连接的速度是有限的,因此扩展的唯一方法是一次处理多个连接。使用 async/await 语言功能,增加并发操作的数量变得非常简单,允许您扩展到大量并发任务。

可靠

Tokio 是使用 Rust 构建的, Rust 是一种让每个人都能够构建可靠和高效软件的语言。许多研究发现大约 70% 的高严重性安全漏洞是由于内存不安全导致。使用 Rust 可以消除应用程序中的这一整类错误。

Tokio 也非常注重提供一致的行为,这无需惊讶。Tokio 的主要目标是允许用户部署可预测的软件,这些软件将以可靠的响应时间和不可预测的延迟峰值日复一日地执行。

简单

借助 Rust 的 async/await 功能,编写异步应用程序的复杂性大大降低。结合 Tokio 的应用程序和十分活跃的生态,编写应用程序轻而易举。借助 Rust 的强大类型系统,轻松交付正确代码的能力是无与伦比的。

Tokio 在有意义时遵循标准库的命名惯例。这可以轻松地将仅使用标准库编写的代码转换为使用 Tokio 编写的代码。

灵活

Tokio 提供运行时的多种变体。从多线程、work-stealing 的运行时到轻量级的单线程运行时,应有尽有。每个运行时都带有许多旋钮,允许用户根据需要进行调整。

什么时候不需要使用 Tokio

尽管 Tokio 对许多需要同时做很多事情的项目很有用,但也有一些用例 Tokio 不太合适。

  • 通过在多个线程上并行运行 CPU 密集型计算来加速它们。Tokio 专为 IO 密集型应用程序而设计,其中每个单独的任务花费大部分时间等待 IO。如果你的应用程序唯一做的就是并行运行计算,你应该使用 rayon 。也就是说,如果你需要同时做这两件事,仍然可以“混合搭配”。
  • 读取大量文件。尽管看起来 Tokio 对于只需要读取大量文件的项目很有用,但与普通线程池相比,Tokio 在这里没有任何优势。这是因为操作系统通常不提供异步文件 API。
  • 发送单个 Web 请求。Tokio 给你带来优势是当你需要同时做很多事情的时候。如果你需要使用一个用于异步 Rust 的库,比如 reqwest,但你不需要一次做很多事情,你应该更喜欢该库的阻塞版本,因为它会让你的项目更简单。当然,使用 Tokio 仍然可以工作,但与阻塞 API 相比没有真正的优势。如果库未提供阻塞 API ,请参阅有关使用同步代码桥接的章节。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/tokio-doc/gai-s...

译文地址:https://learnku.com/docs/tokio-doc/gai-s...

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~