Tar*_*oys 14 events multithreading
我正在寻找一个类比,这将有助于我理解基于线程的服务器如何处理http请求与基于事件的服务器如何处理http请求之间的区别.假设服务器是建筑物中的商店,端口80是商店的前门,http请求是刚走进前门的顾客.接下来发生什么?商店如何处理客户?该商店如何处理多个客户,以及客户离开商店的速度有何不同?
简而言之,我正在寻找一个关于"事件循环"和"线程","阻塞"和"非阻塞"等事物的物理,真实世界类比的解释.
Mat*_*all 21
在基于线程的服务器类比中,每个客户都由他们自己的店员雇佣.当顾客离开时,店员可以帮助另一个顾客.可以同时帮助的员工数量与商店的员工数量直接相关.
在基于事件的服务器类比中,单个商店员工可能会为多个客户提供服务 - 让我们称他为Bob.Bob将可能需要一段时间的各种步骤(例如" x在后面的房间中找到我的项目")委托给其他商店员工.当鲍勃向求助者寻求帮助时,助手会跑到商店的其他地方,鲍勃可以继续帮助其他客户,而最初的客户则等待帮助者回到鲍勃身边.当帮助者确实返回完成任务后,他们将等待Bob与Bob的当前客户达成一个良好的停止点,然后Bob可以再次与帮助者和原始客户交谈.