Update ch17-03-more-futures.md

pull/885/head
qwer252 1 week ago committed by GitHub
parent 47f107c3d1
commit 336c7e033d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -272,7 +272,7 @@ received 'you'
回忆一下[第一个异步程序][async-program]中提到在每一个 await point如果被 await 的 future 还没有就绪Rust 会给运行时一个机会来暂停该任务并切换到另一个任务。反过来也是正确的Rust *只会* 在一个 await point 暂停异步代码块并将控制权交还给运行时。await points 之间的一切都是同步的。
这意味着如果你在异步代码块中做了一堆工作而没有一个 await point则那个 future 会阻塞其它任何 future 继续进行。有时你可能会听说这称为一个 future 导致其它 future *饥饿*starving。在一些情况中这可能不是什么大问题。不过如果你在进行某种昂贵的设置或者长时间运行的任务亦或有一个 future 会无限持续运行某些特定任务的话,你会需要思考在何时何地将控制权交还运行时。
这意味着如果你在异步代码块中做了一堆工作而没有一个 await point则那个 future 会阻塞其它任何 future 继续进行。有时你可能会听说这称为一个 future 导致其它 future *饥饿*starving 。在一些情况中,这可能不是什么大问题。不过,如果你在进行某种昂贵的设置或者长时间运行的任务,亦或有一个 future 会无限持续运行某些特定任务的话,你会需要思考在何时何地将控制权交还运行时。
同样地,如果你有长时间运行的阻塞操作,异步可能是一个提供了将程序的不同部分相互关联起来的实用工具。

Loading…
Cancel
Save