Merge pull request #1302 from sb-child/patch-7

typo fix: src/advance-practice/async.md
pull/1322/head
Sunface 1 year ago committed by GitHub
commit 50e7a9eb77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -347,7 +347,7 @@ impl Future for Delay {
#### 处理 wake 通知
下面,让我们更新 mint-tokio 服务,让它能接收 wake 通知:当 `waker.wake()` 被调用后,相关联的任务会被放入执行器的队列中,然后等待执行器的调用执行。
下面,让我们更新 mini-tokio 服务,让它能接收 wake 通知:当 `waker.wake()` 被调用后,相关联的任务会被放入执行器的队列中,然后等待执行器的调用执行。
为了实现这一点,我们将使用消息通道来排队存储这些被唤醒并等待调度的任务。有一点需要注意,从消息通道接收消息的线程(执行器所在的线程)和发送消息的线程(唤醒任务时所在的线程)可能是不同的,因此消息( `Waker` )必须要实现 `Send``Sync`,才能跨线程使用。
@ -522,7 +522,7 @@ async fn main() {
我们之前的 `Delay` 实现中,会在每一次 `poll` 调用时都生成一个新的线程。这么做问题不大,但是当 `poll` 调用较多时会出现明显的性能问题!一个解决方法就是记录你是否已经生成了一个线程,然后只有在没有生成时才去创建一个新的线程。但是一旦这么做,就必须确保线程的 `Waker` 在后续 `poll` 调用中被正确更新,否则你无法唤醒最近的 `Waker`
这一段大家可能会看得云里雾里的,没办法,原文就来绕去,好在终于可以看代码了。。我们可以通过代码来解决疑惑:
这一段大家可能会看得云里雾里的,没办法,原文就来绕去,好在终于可以看代码了。。我们可以通过代码来解决疑惑:
```rust
use std::future::Future;

Loading…
Cancel
Save