0

很抱歉这个愚蠢的问题,但我真的很困惑;我希望你能纠正我哪里错了。

基于线程的服务器(如 Apache)中,我知道对于每个客户端,将为他创建一个新的“工人”来满足他的所有需求。

事件驱动(如 Nginx 和 Tornado)中,这让我感到困惑,尤其是像Python 的 GIL这样的Not Thread Safe;据我了解,只有一个循环可以处理所有客户端请求,所以据我所知,如果有 10 000 个同时连接,我不知道如何处理所有这 10 个请求!

4

1 回答 1

2

在事件驱动的服务器中,您只需使用非阻塞调用一个接一个地处理连接(实际上是来自特定连接read()的 s 和s )。write()您通常在连接(select(), poll(), ...)之间使用一些调用来进行多路复用,它会告诉您需要服务哪些连接,然后您依次为它们提供服务。

于 2012-12-02T10:58:30.433 回答