File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed
Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments