Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 02_why_async.md #98

Open
wants to merge 1 commit into
base: zh-CN
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src_zh-CN/01_getting_started/02_why_async.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Rust 中异步的首选替代是使用 OS 线程,可以直接通过 `std::thre

**OS 线程** 适合少量任务,因为线程会有 CPU 和内存开销。生成和切换线程是代价相当昂贵,甚至闲置的线程也会消耗系统资源。一个线程池库可以减轻这些开销,但并不能全部健康。然而,线程能让你重新利用存在的同步代码,而不需要大改源代码——不需要特别的编程模型。一些操作系统中,你也可以改变线程的优先级,这对于驱动或者其他延迟敏感的应用很有用。

**异步** 极大地降低了 CPU 和内存开销,尤其是再负载大量越过IO 边界的任务,例如服务器和数据库。同样,你可以处理比 OS 线程更高数量级的任务,因为异步运行时使用少量(昂贵的)线程来处理大量(便宜的)任务。然而,异步 Rust 会导致更大的二进制体积,因为异步函数会生成状态机,并且每个可执行文件都会绑定一个异步运行时。
**异步** 极大地降低了 CPU 和内存开销,尤其是在负载大量越过IO 边界的任务,例如服务器和数据库。同样,你可以处理比 OS 线程更高数量级的任务,因为异步运行时使用少量(昂贵的)线程来处理大量(便宜的)任务。然而,异步 Rust 会导致更大的二进制体积,因为异步函数会生成状态机,并且每个可执行文件都会绑定一个异步运行时。

最后一点,异步编程并没有 *更优于* 线程模型,不过它们是不一样的。如果你不需要由于性能原因使用异步,线程通常是个更简单的替换。

Expand Down