Update Ch20

This commit is contained in:
Peng Hailin, 2023-04-02 13:11:24 +08:00
parent e334024f3e
commit 79f483239b

View File

@ -539,4 +539,13 @@ fn handle_conn(mut stream: TcpStream) {
这种技巧只是提供 web 服务器吞吐量的许多方法之一。咱们可能探讨的其他选项分别是 *分叉汇合模型fork/join model*、*单线程异步 I/O 模型single-threaded async I/O model*,抑或 *多线程异步 I/O 模型multi-threaded async I/O model*。若对此问题感兴趣,那么可以阅读有关其他解决方案的资料,并尝试实现他们;对于 Rust 这种底层编程语言,所有这些选项都是可行的。
在开始实现线程池前,咱们来聊聊用到这个池子的东西会是什么样子。在咱们正要尝试设计代码时,首先编写客户端界面,可有助于引导咱们的设计。要以咱们打算调用代码 API 的方式,编写出这些有组织架构的代码 API随后在那种组织架构下实现功能而非先实现功能而随后设计那些公开 API。
与第 12 章中项目里用到的测试驱动方式的开发test-driven development类似这里咱们将运用编译器驱动的开发compiler-driven development。咱们将先编写出咱们打算调用那些函数的代码而随后会看看来自编译器的那些报错以确定出接下来咱们应修改些什么来让代码运作起来。在咱们进行那一步之前咱们将探讨一下咱们并不会用到的一种技巧作为开头。
#### 为每个请求生成一个线程
**Spawning a Thread for Each Request**