|
|
@ -118,7 +118,7 @@ use std::time::{Duration, Instant};
|
|
|
|
enum MainFuture {
|
|
|
|
enum MainFuture {
|
|
|
|
// 初始化,但永远不会被 poll
|
|
|
|
// 初始化,但永远不会被 poll
|
|
|
|
State0,
|
|
|
|
State0,
|
|
|
|
// 等待 `Delay` 运行,例如 `future.awai` 代码行
|
|
|
|
// 等待 `Delay` 运行,例如 `future.await` 代码行
|
|
|
|
State1(Delay),
|
|
|
|
State1(Delay),
|
|
|
|
// Future 执行完成
|
|
|
|
// Future 执行完成
|
|
|
|
Terminated,
|
|
|
|
Terminated,
|
|
|
@ -607,4 +607,4 @@ async fn delay(dur: Duration) {
|
|
|
|
- `Waker` 是 `Future` 被执行的关键,它可以链接起 `Future` 任务和执行器
|
|
|
|
- `Waker` 是 `Future` 被执行的关键,它可以链接起 `Future` 任务和执行器
|
|
|
|
- 当资源没有准备时,会返回一个 `Poll::Pending`
|
|
|
|
- 当资源没有准备时,会返回一个 `Poll::Pending`
|
|
|
|
- 当资源准备好时,会通过 `waker.wake` 发出通知
|
|
|
|
- 当资源准备好时,会通过 `waker.wake` 发出通知
|
|
|
|
- 执行器会收到通知,然后调度该任务继续执行,此时由于资源已经准备好,因此任务可以顺利往前推进了
|
|
|
|
- 执行器会收到通知,然后调度该任务继续执行,此时由于资源已经准备好,因此任务可以顺利往前推进了
|
|
|
|