ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Tokio】优势和劣势

2022-03-31 18:31:44  阅读:293  来源: 互联网

标签:异步 应用程序 Rust 劣势 优势 Tokio 编写 运行


环境

  • Time 2022-01-13
  • Rust 1.57.0
  • Tokio 1.15.0

概念

参考:https://tokio.rs/tokio/tutorial

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

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

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

Tokio 在项目中的角色

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

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

Tokio 的优势

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

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

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

可靠

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

Tokio 还非常注重提供一致的行为,不会出现意外。Tokio 的主要目标是允许用户部署可预测的软件,这些软件将以可靠的响应时间执行,并且没有不可预测的延迟峰值。

容易

借助 Rust 的 async/await 功能,编写异步应用程序的复杂性已大大降低。与 Tokio 的实用程序和充满活力的生态系统相结合,编写应用程序轻而易举。

Tokio 在有意义时遵循标准库的命名约定。这允许轻松地将仅使用标准库编写的代码转换为使用Tokio编写的代码。借助 Rust 的强大类型系统,轻松交付正确代码的能力无与伦比。

灵活

Tokio 提供了运行时的多种变体。从多线程、任务窃取运行时到轻量级单线程运行时,应有尽有。这些运行时中的每一个都带有许多配置,以允许用户根据自己的需要调整它们。

什么时候不使用 Tokio

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

  • 通过在多个线程上并行运行 CPU 密集型计算来加快这些计算的速度。Tokio 是为 IO 绑定的应用程序而设计的,其中每个单独的任务将大部分时间花在等待 IO 上。如果您的应用程序唯一要做的就是并行运行计算,则应使用 rayon。也就是说,如果你需要同时做这两件事,仍然可以"混合和匹配"。
  • 读取大量文件。虽然 Tokio 对于只需要读取大量文件的项目似乎很有用,但与普通的线程池相比,Tokio 在这里没有任何优势。这是因为操作系统通常不提供异步文件 API。
  • 发送单个 Web 请求。Tokio 给你带来优势的地方是当你需要同时做很多事情的时候。如果你需要使用一个用于异步 Rust 的库,比如 reqwest,但你不需要一次做很多事情,你应该更喜欢该库的阻塞版本,因为它会让你的项目更简单。当然,使用 Tokio 仍然可以工作,但与阻塞 API 相比,它并没有提供真正的优势。

总结

描述了 Tokio 的优势和劣势,根据具体的场景进行选择。

附录

标签:异步,应用程序,Rust,劣势,优势,Tokio,编写,运行
来源: https://www.cnblogs.com/jiangbo44/p/16083217.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有