Update Ch20

This commit is contained in:
Unisko PENG 2023-04-04 17:23:23 +08:00
parent 3754326fec
commit 22648ebdaa

View File

@ -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` 存储在那个矢量值中。