From f49d3d124d9639fbbfb6e6c03460bce9b6adec0e Mon Sep 17 00:00:00 2001 From: fan-xuan-zhe <35688381+zephyr-fun@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:44:23 +0800 Subject: [PATCH] Update ch20-02-multithreaded.md (#143) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update ch20-02-multithreaded.md fix topo 原:“它会获取需要允许代码的闭包...” 改:“它会获取需要运行代码的闭包...” * Update ch20-02-multithreaded.md --------- Co-authored-by: YangQi --- src/ch20-02-multithreaded.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch20-02-multithreaded.md b/src/ch20-02-multithreaded.md index 78bcd0e..b1322bd 100644 --- a/src/ch20-02-multithreaded.md +++ b/src/ch20-02-multithreaded.md @@ -368,7 +368,7 @@ impl ThreadPool { 我们将要实现的行为是创建线程并稍后发送代码,这会在 `ThreadPool` 和线程间引入一个新数据类型来管理这种新行为。这个数据结构称为 `Worker`:这是一个池实现中的常见概念。想象一下在餐馆厨房工作的员工:员工等待来自客户的订单,他们负责接受这些订单并完成它们。 -不同于在线程池中储存一个 `JoinHandle<()>` 实例的 vector,我们会储存 `Worker` 结构体的实例。每一个 `Worker` 会储存一个单独的 `JoinHandle<()>` 实例。接着会在 `Worker` 上实现一个方法,它会获取需要允许代码的闭包并将其发送给已经运行的线程执行。我们还会赋予每一个 worker `id`,这样就可以在日志和调试中区别线程池中的不同 worker。 +不同于在线程池中储存一个 `JoinHandle<()>` 实例的 vector,我们会储存 `Worker` 结构体的实例。每一个 `Worker` 会储存一个单独的 `JoinHandle<()>` 实例。接着会在 `Worker` 上实现一个方法,它会获取需要运行代码的闭包并将其发送给已经运行的线程执行。我们还会为每个 worker 分配一个 `id`,以便于在日志或调试中区别线程池中的不同 worker。 首先,让我们做出如此创建 `ThreadPool` 时所需的修改。在通过如下方式设置完 `Worker` 之后,我们会实现向线程发送闭包的代码: