14

我正在寻找一个类比来帮助我理解基于线程的服务器如何处理 http 请求和基于事件的服务器如何处理 http 请求之间的区别。假设一台服务器是一栋楼的店铺,80端口是店铺的前门,一个http请求是刚刚走进前门的顾客。接下来发生什么?商店如何处理客户?商店如何处理多个顾客,以及顾客离开商店的速度有何不同?

简而言之,我正在寻找对“事件循环”和“线程”以及“阻塞”和“非阻塞”等事物的物理、现实世界类比的解释。

4

1 回答 1

21

在基于线程的服务器类比中,每个客户都由他们自己的店员服务。当顾客离开时,店员可以帮助另一位顾客。可以同时得到帮助的员工数量与商店的员工数量直接相关。

在基于事件的服务器类比中,单个商店员工可能为多个客户提供服务——我们称他为 Bob。Bob 将可能需要一段时间的各种步骤(例如“在后面的房间里找我的物品x” )委派给其他商店员工。当 Bob 向助手寻求帮助时,助手匆匆跑到商店的其他地方,而 Bob 可以继续帮助其他顾客,而原来的顾客则在周围等待助手回到 Bob 身边。当助手完成任务返回时,他们将等待 Bob 与 Bob 的当前客户到达一个好的停止点,然后 Bob 可以再次与助手和原始客户交谈。

于 2013-03-24T15:05:17.550 回答