【问题标题】:Why reactor pattern (Twisted, Gevent, Node.js, etc.)为什么反应器模式(Twisted、Gevent、Node.js 等)
【发布时间】:2016-10-04 19:48:37
【问题描述】:

通过阅读这篇文章, http://www.artima.com/articles/io_design_patternsP.html

我知道前摄器模式是完全异步的,而反应器模式不是。

我所知道的所有流行的异步事件驱动网络框架(Twisted、Gevent、Tornado、Asyncio 和 Node.js)都应用了反应器设计模式。这是为什么?前摄器模式不是提供更好的性能吗?

【问题讨论】:

标签: python node.js events asynchronous twisted


【解决方案1】:

因为,正如您引用的这篇文章所指出的那样,Proactor 模式需要内核级(内部)对异步 I/O 的支持,而且并非所有操作系统都在其面向用户的 I/O 层中原生提供这种支持。你提到的框架都是多平台的工具包/模块,所以需要支持多种OS I/O架构。

这些框架无需为每个操作系统提供特定于平台的“后端”实现,而是选择了“最小公分母”设计模式。 Reactor 模式更通用,因此可以在本地实现而不需要不同的后端。

【讨论】:

  • @StephenRauch 你能说得更具体点吗?您认为用户为什么应该参加游览?
  • 确切的措辞是“当事件多路分解器等待时,操作系统在并行内核线程中执行读取操作,将数据放入用户定义的缓冲区,并通知事件多路分解或读取是完成。不过,我相信,应用软件或支持软件也不排除这样做和控制缓冲区访问。
猜你喜欢
  • 2018-06-28
  • 2011-03-28
  • 2019-11-12
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-10
  • 2011-05-01
  • 2010-10-28
相关资源
最近更新 更多