Update ch20-02-multithreaded.md (#143)

* Update ch20-02-multithreaded.md

fix topo
原:“它会获取需要允许代码的闭包...”
改:“它会获取需要运行代码的闭包...”

* Update ch20-02-multithreaded.md

---------

Co-authored-by: YangQi <yangfong2022@qq.com>
This commit is contained in:
fan-xuan-zhe 2023-09-20 15:44:23 +08:00 committed by GitHub
parent 6eb93da6e5
commit f49d3d124d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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` 之后,我们会实现向线程发送闭包的代码: