Skip to content

Commit 81f9bdd

Browse files
authored
Update ch17-05-traits-for-async.md
1 parent 9bf05de commit 81f9bdd

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/ch17-05-traits-for-async.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ loop {
6868

6969
不过,如果 Rust 真的将代码精确地编译成那样,那么每一个 `await` 都会变成阻塞操作 -- 这恰恰与我们的目标相反!相反,Rust 确保循环可以将控制权交给一些可以暂停当前 future 转而去处理其它 future 并在之后再次检查当前 future 的内容。如你所见,这就是异步运行时,这种安排和协调的工作是其主要工作之一。
7070

71-
在本章前面的内容中,我们描述了等待 `rx.recv``recv` 调用返回一个 future,并 await 轮询它的 future。我们注意到运行时会暂停 future ,直到它就绪并返回 `Some(message)` ,或是信道关闭时返回 `None` 为止。随着我们对 `Future` trait,尤其是 `Future::poll` 的理解的深入,我们可以看出其是如何工作的。当返回 `Poll::Pending` 时,运行时知道 future 还没有准备就绪。反过来说,当 `poll` 返回 `Poll::Ready(Some(message))``Poll::Ready(None)` 时运行时知道 future **已经** 准备就绪,并将其推进。
71+
在本章前面的内容中,我们描述了等待 `rx.recv``recv` 调用返回一个 future,并 await 轮询它的 future。我们注意到运行时会暂停 future,直到它就绪并返回 `Some(message)` ,或是信道关闭时返回 `None` 为止。随着我们对 `Future` trait,尤其是 `Future::poll` 的理解的深入,我们可以看出其是如何工作的。当返回 `Poll::Pending` 时,运行时知道 future 还没有准备就绪。反过来说,当 `poll` 返回 `Poll::Ready(Some(message))``Poll::Ready(None)` 时运行时知道 future **已经** 准备就绪,并将其推进。
7272

7373
运行时如何工作的具体细节超出了本书的范畴。不过关键在于理解 future 的基本机制:运行时**轮询**其所负责的每一个 future,在它们还没有完成时使其休眠。
7474

0 commit comments

Comments
 (0)