Rust 并发编程实战课
晁岳攀(鸟窝)
前微博技术专家,知名微服务框架 rpcx 作者
501 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已更新 14 讲/共 38 讲
第三章:异步编程 (1讲)
Rust 并发编程实战课
15
15
1.0x
00:00/00:00
登录|注册

12|时序交错,异步之美:async/await异步编程

你好,我是鸟窝。
在前几节课我们讲述了 Rust 各种线程池的用法,接下来的两节课我重点介绍一下 Rust 比较新的异步编程模式。

异步编程的历史

Rust 的异步编程模型经历了多次演变,最终在 1.39 版本(2019 年)正式引入了 async/.await 语法,这是一个重要的里程碑。
以下是 Rust 异步发展的主要阶段:
早期 Futures(Futures 0.1):在 async/.await 出现之前,Rust 主要使用 Futures 库进行异步编程。Futures 提供了一种表示异步操作的抽象,但使用起来较为复杂,需要手动编写大量的回调和状态管理代码。
Futures 0.3 与标准化:为了改进 Futures 的易用性,Rust 社区进行了大量的改进和标准化工作,最终形成了 Futures 0.3 版本,并将其合并到了标准库中。这个版本为后续的 async/.await 奠定了基础。
async/.await 的引入(Rust 1.39):async/.await 语法的引入极大地简化了 Rust 的异步编程。它允许开发者像编写同步代码一样编写异步代码,避免了繁琐的回调和状态管理,提高了代码的可读性和可维护性。
在 async/.await 出现之前,Rust 的异步编程主要面临代码复杂性、心智负担重、错误处理等痛点,而 async/.await 的引入有效地解决了这些痛点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Rust异步编程经历了多次演变,最终在1.39版本引入了`async/.await`语法,极大地简化了异步编程,提高了代码的可读性和可维护性。 2. Rust的异步编程主要面临代码复杂性、心智负担重、错误处理等痛点,而`async/.await`的引入有效地解决了这些问题,成为Rust异步编程的标准方式。 3. Rust标准库提供了异步编程的基础构建模块,如`Future` trait、`async`和`await`关键字、`std::task`模块等,但需要使用第三方库(如Tokio、async-std)来实际运行异步代码。 4. `block_on`方法是将异步代码桥接到同步代码中执行的重要工具,适用于`main`函数入口、测试、与同步代码集成等场景,但在异步上下文中使用需谨慎,可能会降低程序的并发性能。 5. Rust的异步生态系统不统一定义`block_on`的接口,但各种异步运行时提供了类似功能的方法,说明其在异步编程中扮演着重要的角色。 6. Rust的异步生态系统包括Tokio、async-std、smol等第三方库,它们提供了丰富的异步工具和组件,适用于不同规模和需求的项目. 7. 在异步上下文中使用`block_on`可能导致死锁,应避免在已经运行在异步运行时中的代码中使用`block_on`,应该使用异步运行时提供的任务调度机制来运行异步任务。 8. 在需要高并发和高性能的场景中应该谨慎使用`block_on`,通常应该使用异步运行时提供的任务调度机制来运行异步任务,而不是`block_on`. 9. `.await` 是 Rust 异步编程中至关重要的操作符,它用于挂起当前异步函数的执行,直到一个 `Future` 完成并产生结果。理解 `.await` 的工作方式以及它在各种复杂场景下的表现,对于编写高效、正确的异步代码至关重要。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 并发编程实战课》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • DoHer4S
    干货满满 谢谢分享
    2025-03-12归属地:陕西
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部