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

15|东邪西毒,南帝北丐:其他异步运行时

你好,我是鸟窝。
上节课我们重点介绍了 Tokio 这个异步运行时。虽然它是使用最广泛的一个异步运行时,但是也并不是它一家独大,还有几个优秀的运行时,这节课我一一给你道来。

async-std

async-std 和它的一系列配套库,是为了让你的异步编程更轻松而生的。它为各种库和应用都提供了最基础的工具。它的名字也说明了它的设计思路:尽可能地照着 Rust 标准库来做,把里面的东西都换成异步的版本。这也是它的特色,和其他异步运行时不太一样的地方。
async-std 提供了各种重要功能的接口:文件操作、网络操作,还有像定时器这样的并发基础功能。它也提供了一个叫做 task 的东西,用起来有点像 Rust 标准库里的 thread 模块。而且它不光有 I/O 相关的,还有像 Mutex 这种也能在 async/await 环境下用的版本。
async-std 开发者的设计理念就是异步 Rust 应该像同步 Rust 一样简单易学,最好的 API 就是你已经用惯的那些。他们认为给标准库配上异步的版本,是让大家既能保证性能又能提高效率的最佳方案,因为标准库本身就很可靠。
async-std 就是为了实现这个目标而生的。它把单次内存分配的任务创建方式,跟一个能自动调节的无锁执行器、线程池和网络驱动结合起来,构成了一个很顺畅的系统,用大家熟悉的 Rust 标准库 API,就能高速、低延迟地处理各种任务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. `async-std` 是一个为了让异步编程更轻松而生的异步运行时,旨在让异步 Rust 应该像同步 Rust 一样简单易学,提供了类似 Rust 标准库里的 `thread` 模块的 `task`,以及在 async/await 环境下使用的版本如 `Mutex`。 2. `async-std` 通过将单次内存分配的任务创建方式与一个能自动调节的无锁执行器、线程池和网络驱动结合起来,构成了一个很顺畅的系统,用大家熟悉的 Rust 标准库 API,就能高速、低延迟地处理各种任务。 3. `smol` 的目标是提供一个轻量级、快速、灵活的异步运行时,具有小巧精悍、高性能、灵活性和强调简洁和控制的特点,与 `futures-rs` 紧密结合,允许开发者根据需要选择和组合其他库,同时兼容 `tokio` 和 `async-std`。 4. `smol` 的设计哲学是尽可能地减少默认约定,让开发者对异步行为有更多的控制权,提供了 `spawn` 和 `block_on` 方法来运行异步任务,以及 `unblock` 方法用于在一个线程池中执行阻塞代码。 5. 异步生态圈中还存在其他异步运行时,如 `embassy`、`glommio` 和字节跳动的 `monoio`,每个都有自己的特色和适用场景。 6. 异步运行时的选择对于开发者来说是一个挑战,`Tokio` 目前可能是最好的选择,但也需要根据具体需求和场景进行权衡和选择。 7. 2024年有一篇文章对当前的异步运行时进行了分析,指出 `async-std` 项目自2021年后已经不活跃,而 `Tokio` 依然保持活跃,`smol` 也有贡献者时不时地提交。 8. 异步运行时的选择对于库的开发者来说也是一个挑战,需要权衡选择来支持异步代码,因为这些异步运行时不兼容,即使有兼容库也不是很完备。 9. 本文提到了一个思考题,要求使用 `Tokio` 实现一个击鼓传花的游戏,这是一个实际的编程练习,可以帮助读者加深对异步编程的理解和应用。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部