From 22648ebdaa23b2268d8798843f0a23149d4d4ae0 Mon Sep 17 00:00:00 2001 From: Unisko PENG Date: Tue, 4 Apr 2023 17:23:23 +0800 Subject: [PATCH] Update Ch20 --- ...0_Final_Project_Building_a_Multithreaded_Web_Server.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Ch20_Final_Project_Building_a_Multithreaded_Web_Server.md b/src/Ch20_Final_Project_Building_a_Multithreaded_Web_Server.md index 1fcf2fe..ff1c41b 100644 --- a/src/Ch20_Final_Project_Building_a_Multithreaded_Web_Server.md +++ b/src/Ch20_Final_Project_Building_a_Multithreaded_Web_Server.md @@ -827,4 +827,12 @@ impl ThreadPool { 在线程池中存储的,不再是 `JoinHandle<()>` 实例的矢量值,咱们将存储这个 `Worker` 结构体的实例。每个 `Worker` 都将存储一个单独的 `JoinHandler<()>` 实例。随后咱们将在 `Worker` 上实现一个,将取得要运行代码的闭包,并将其发送到已经运行着的线程去执行的方法。咱们还将给到每个 `Worker` 一个 `id`,如此咱们就可以在日志记录或调试时,区分出线程池中那些不同的 `Worker`。 +以下便是在咱们创建一个 `ThreadPool` 时,将发生的一个新过程。咱们将在以此方式建立起 `Worker` 结构体后,再实现把闭包发送给线程的那些代码: + +1. 定义出一个保存了一个 `id` 与一个 `JoinHandler<()>` 的 `Worker` 结构体; +2. 把 `ThreadPool` 修改为保存一个 `Worker` 实例构成的矢量值; +3. 定义出会取一个 `id` 数字,并返回保存着这个 `id`,以及带有所生成的有着一个空闭包的线程的一个 `Worker` 实例,这样一个 `Worker::new` 函数; +4. 在 `Thread::new` 中,会使用那个 `for` 循环的计数器,来生成一个 `id`、用那个 `id` 创建出一个新的 `Worker`,并将该 `Worker` 存储在那个矢量值中。 + +