From e27a49cf62add3fcd5cf6552a2b8a9799f3e8206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=83=B3=E5=87=BA=E7=BD=91=E5=90=8D=E5=95=A6?= Date: Tue, 10 Oct 2023 18:52:24 +0800 Subject: [PATCH 1/2] typo fix --- src/advance-practice/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/advance-practice/async.md b/src/advance-practice/async.md index c84053a9..5047a840 100644 --- a/src/advance-practice/async.md +++ b/src/advance-practice/async.md @@ -347,7 +347,7 @@ impl Future for Delay { #### 处理 wake 通知 -下面,让我们更新 mint-tokio 服务,让它能接收 wake 通知:当 `waker.wake()` 被调用后,相关联的任务会被放入执行器的队列中,然后等待执行器的调用执行。 +下面,让我们更新 mini-tokio 服务,让它能接收 wake 通知:当 `waker.wake()` 被调用后,相关联的任务会被放入执行器的队列中,然后等待执行器的调用执行。 为了实现这一点,我们将使用消息通道来排队存储这些被唤醒并等待调度的任务。有一点需要注意,从消息通道接收消息的线程(执行器所在的线程)和发送消息的线程(唤醒任务时所在的线程)可能是不同的,因此消息( `Waker` )必须要实现 `Send`和 `Sync`,才能跨线程使用。 From fa743b7d704e00830ce4659eb3616eb83593a64a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=83=B3=E5=87=BA=E7=BD=91=E5=90=8D=E5=95=A6?= Date: Tue, 10 Oct 2023 18:56:10 +0800 Subject: [PATCH 2/2] typo fix --- src/advance-practice/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/advance-practice/async.md b/src/advance-practice/async.md index 5047a840..1da47d04 100644 --- a/src/advance-practice/async.md +++ b/src/advance-practice/async.md @@ -522,7 +522,7 @@ async fn main() { 我们之前的 `Delay` 实现中,会在每一次 `poll` 调用时都生成一个新的线程。这么做问题不大,但是当 `poll` 调用较多时会出现明显的性能问题!一个解决方法就是记录你是否已经生成了一个线程,然后只有在没有生成时才去创建一个新的线程。但是一旦这么做,就必须确保线程的 `Waker` 在后续 `poll` 调用中被正确更新,否则你无法唤醒最近的 `Waker` ! -这一段大家可能会看得云里雾里的,没办法,原文就饶来绕去,好在终于可以看代码了。。我们可以通过代码来解决疑惑: +这一段大家可能会看得云里雾里的,没办法,原文就绕来绕去,好在终于可以看代码了。。我们可以通过代码来解决疑惑: ```rust use std::future::Future;