多进程、多线程和事件驱动的 I/O:Web 服务器中的权衡。 Web 服务器需要支持并发。 服务器应及时、公平地为客户端提供服务,以确保没有客户端因其他客户端导致服务器挂起而饿死。 多进程和多线程以及它们的混合是实现并发的传统方法。 Node.js 代表了另一种方式,一种基于异步 I/O 系统库的方式,例如 epoll (Linux) 和 kqueue (FreeBSD)。 为了突出这些方法之间的权衡,我编写了三个接近底层的 C 语言回显服务器:forking_server、threading_server 和 polling_server。