Rust Async 异步编程

https://www.bilibili.com/video/BV16r4y187P4/

https://www.bilibili.com/video/BV1XZ4y1c7tD

异步 会更高效率利用CPU资源,但是会增加编程难度,需要对异步编程有一定的理解。

Rust 异步编程的实现方式有两种:

  • 基于 Future 实现
  • 基于 async/await 实现

基于 Future 实现

Future 是异步编程的核心,Future 是一个代表未来值的对象,可以理解为一个异步操作的结果。

Future 是一个异步操作的结果,它会在未来完成,并将结果返回给调用者。

Future 是一个异步操作的结果,它会在未来完成,并将结果

  • 基于 Stream 实现

Future

Future 是异步编程的核心,Future 是一个代表未来值的对象,可以理解为一个异步操作的结果。

Future 是一个异步操作的结果,它会在未来完成,并将结果返回给调用者。

Future 是一个异步操作的结果,它会在未来完成,并将结果


1
2
3
4
5
6
7
8
fn main() {
let mut future = async {
println!("Hello, world!");
};

// 阻塞等待
future.await;
}

加上async就成了异步函数.而异步函数是惰性的,只有遇到.await关键字才会执行

这两个任务可以执行在同一个线程上,也可以在单独的(不同的)线程上,取决于tokio运行时的配置

上面这种写法 是 下面这种写法的语法糖

poll方法对异步程序非常重要,被异步运行时调用,检查任务是否完成,返回一个enum类型, Pending表示未完成,Ready表示已完成


谷歌翻译 把 异步执行器,翻译为遗嘱执行人..

Pin是固定之意,固定到内存的某个位置