我们都已阅读基准并了解事实 - 基于事件的异步网络服务器比线程对等服务器更快.想想lighttpd或Zeus与Apache或IIS.这是为什么?
我认为基于事件和基于线程不是问题 - 它是一个非阻塞的多路复用I/O,可选套接字,解决方案与线程池解决方案.
在第一种情况下,无论使用什么输入,您都会处理所有输入 - 因此读取时没有阻塞 - 单个"监听器".单个侦听器线程将数据传递给可以是不同类型的工作线程 - 而不是每个连接一个.同样,在写入任何数据时都没有阻塞 - 因此数据处理程序可以单独运行它.因为这个解决方案主要是IO读/写,所以它不占用很多CPU时间 - 因此您的应用程序可以采取这种方式来做任何想做的事情.
在线程池解决方案中,您有各自的线程处理每个连接,因此他们必须共享上下文切换时间和每个人"监听".在这个解决方案中,CPU + IO操作在同一个线程中 - 它获得一个时间片 - 所以你最终等待IO操作完成每个线程(阻塞),传统上可以在不使用CPU时间的情况下完成.
Google提供了非阻塞IO以获取更多详细信息 - 您也可以找到一些与线程池相比较的比较.
(如果有人能澄清这些要点,请随意)