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

13|运筹帷幄,伺机而动:Tokio异步运行时(上)

你好,我是鸟窝。
在上节课我们已经了解了 Rust 的异步编程的基本知识,而且我们也学会了编写异步编程的代码,但是 Rust 标准库是没有提供异步运行时的实现的,我们需要借助第三方实现异步运行时库。
这节课本来我想重点介绍 tokio、async-std、smol 等几种异步运行时,但是 tokio 这个库如此重要且又使用广泛,内容又多,所以本节课我就只介绍 tokio 异步运行时,其他几个运行时我后续再讲。

Tokio 运行时

Tokio 是 Rust 生态系统中最流行的异步运行时,它提供了一系列工具和库,用于构建高性能、高并发的网络应用程序。Tokio 基于 Rust 的 async/await 语法,使得异步代码的编写和维护变得更加简洁和容易。
Tokio 提供了几个主要组件:
用于执行异步代码的多线程运行时。
标准库的异步版本,包括 TCP 和 UDP 套接字、文件系统操作,以及进程和信号管理。
庞大的库生态系统,包括同步原语和通道,以及超时、睡眠和间隔,由操作系统事件队列(epoll、kqueue、IOCP 等)支持的 I/O 驱动程序,以及高性能定时器等。
Tokio 具有以下特点:
速度快
Tokio 速度很快,它构建于同样快速的 Rust 编程语言之上。这秉承了 Rust 的精神,其目标是让开发者即使手动编写等效代码也无法获得更高的性能提升。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Tokio是Rust生态系统中最流行的异步运行时,提供了多线程运行时、标准库的异步版本和庞大的库生态系统,使得异步代码的编写和维护变得更加简洁和容易。 2. Tokio具有速度快、可扩展性强、可靠性高、易用性强和灵活性好等特点,基于Rust的async/await语法,使得编写异步应用程序的复杂性大大降低。 3. 使用`#[tokio::main]`宏可以标记main函数为异步函数,并启动一个Tokio运行时来执行异步代码,同时可以配置单线程或多线程的情况以及线程数量。 4. 当引入Tokio库时,建议使用`full`启用所有特性以确保在构建应用程序时不会遇到任何障碍,或者在开发代码库时提供基于Tokio的最轻量级的crate,确保只启用所需的功能特性。 5. 异步应用程序需要运行时支持,包括I/O事件循环、调度器和定时器,而Tokio的`Runtime`将这些服务捆绑为一个单一类型,允许它们一起启动、关闭和配置。 6. Tokio::task代表一个可执行的异步单元,它不仅包含异步操作的结果(通过future表示),还包含执行环境(即Tokio运行时)。 7. `tokio::task`内部使用`std::future`来表示异步操作的结果,可以将`tokio::task`看作是一个包含future和执行环境的容器。 8. Tokio最初是为高性能I/O密集型应用而设计的,因此`tokio::task`更侧重于处理I/O操作。 9. `tokio::task`是一个比`std::future`更高层的抽象,它建立在`std::future`之上,并提供了更丰富的特性和更易用的API。 10. Tokio的异步编程模型和运行时特性使得在Rust中编写高性能、高并发的网络应用程序变得更加简单和可靠。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)