为什么反应堆模式(Twisted,Gevent,Node.js等)

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

我明白,反应器模式是完全asynchronous的,而反应堆模式不是。

我所知道的所有stream行的asynchronous事件驱动networking框架(Twisted,Gevent,Tornado,Asyncio和Node.js)都适用于反应器devise模式。 这是为什么? 前摄器模式不能提供更好的性能吗?

因为,正如你引用的这篇文章所指出的,Proactor模式需要内核级(内部)支持asynchronousI / O,并不是所有的操作系​​统都在其面向用户的I / O层中提供本地的。 你提到的框架都是多平台的工具包/模块,所以需要支持各种OS I / O体系结构。

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