Event Loop vs Multithread阻塞IO

Unk*_*own 23 io events http blocking

我正在阅读有关服务器架构的评论.

http://news.ycombinator.com/item?id=520077

在这篇评论中,这个人说了三件事:

  1. 事件循环,一次又一次,已被证明真正为大量低活动连接发光.
  2. 相比之下,与事件循环相比,一次又一次地显示了具有线程或进程的阻塞IO模型,以减少基于每个请求的延迟.
  3. 在轻载系统上,差异无法区分.在负载下,大多数事件循环选择减速,大多数阻塞模型选择减少负载.

这些都是真的吗?

还有另一篇文章标题为"为什么事件是一个坏主意(对于高并发服务器)"

http://www.usenix.org/events/hotos03/tech/vonbehren.html

siv*_*udh 21

通常,如果预计应用程序将处理数百万个连接,则可以将多线程范例与基于事件的组合结合起来.

  1. 首先,产生N个线程,其中N ==机器上的核心/处理器数量.每个线程都有一个它应该处理的异步套接字列表.
  2. 然后,对于来自接受器的每个新连接,将新套接字"负载平衡"到具有最少套接字的线程.
  3. 在每个线程中,对所有套接字使用基于事件的模型,以便每个线程可以"同时"实际处理多个套接字.

通过这种方法,

  1. 你永远不会产生一百万个线程.您只需拥有系统可以处理的数量.
  2. 您使用基于事件的多核而不是单核.