当前位置:  开发笔记 > 编程语言 > 正文

为什么基于事件的网络应用程序本身比线程应用程序更快?

如何解决《为什么基于事件的网络应用程序本身比线程应用程序更快?》经验,为你挑选了1个好方法。

我们都已阅读基准并了解事实 - 基于事件的异步网络服务器比线程对等服务器更快.想想lighttpd或Zeus与Apache或IIS.这是为什么?



1> Klathzazt..:

我认为基于事件和基于线程不是问题 - 它是一个非阻塞的多路复用I/O,可选套接字,解决方案与线程池解决方案.

在第一种情况下,无论使用什么输入,您都会处理所有输入 - 因此读取时没有阻塞 - 单个"监听器".单个侦听器线程将数据传递给可以是不同类型的工作线程 - 而不是每个连接一个.同样,在写入任何数据时都没有阻塞 - 因此数据处理程序可以单独运行它.因为这个解决方案主要是IO读/写,所以它不占用很多CPU时间 - 因此您的应用程序可以采取这种方式来做任何想做的事情.

在线程池解决方案中,您有各自的线程处理每个连接,因此他们必须共享上下文切换时间和每个人"监听".在这个解决方案中,CPU + IO操作在同一个线程中 - 它获得一个时间片 - 所以你最终等待IO操作完成每个线程(阻塞),传统上可以在不使用CPU时间的情况下完成.

Google提供了非阻塞IO以获取更多详细信息 - 您也可以找到一些与线程池相比较的比较.

(如果有人能澄清这些要点,请随意)

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有