Twisted诞生于2000年初,作者为Glyph,目的是为了开发网络游戏。
Twisted的历史
Glyph开始采用Java多线程,来开发Twisted Reality,结果多线程使得开发变得复杂,难以扩展。
出现了死锁,加锁出错,缓存污染等问题。Glyph发现自己打开了问题的大门,他需要自己实现一个网络
引擎,而这与他想开发的游戏一样有趣。
而Java的NIO是在2002年才出现的。
Twisted具有的新功能
1、使用基于事件驱动的编程模型,而不是多线程模型。
2、跨平台:为主流操作系统平台暴露出的事件通知系统提供统一的接口。
3、“内置电池”的能力:提供流行的应用层协议实现,因此Twisted马上就可为开发人员所用。
4、符合RFC规范,已经通过健壮的测试套件证明了其一致性。
5、能很容易的配合多个网络协议一起使用。
6、可扩展。
Twisted架构概览
事件驱动:
在事件驱动版本的程序中,3个任务交错执行,但仍然在一个单独的线程控制中。当处理I/O或者其他昂贵的操作时,注册一个回调到事件循环中,然后当I/O操作完成时继续执行。回调描述了该如何处理某个事件。事件循环轮询所有的事件,当事件到来时将它们分配给等待处理事件的回调函数。这种方式让程序尽可能的得以执行而不需要用到额外的线程。事件驱动型程序比多线程程序更容易推断出行为,因为程序员不需要关心线程安全问题。
reactor模式
reactor架构模式使得事件驱动程序来分离和调度多个客户端请求。
Twisted 关键模块
1、Deferred
2、Transports
3、Protocols
4、Applications:Service、Application、配置管理(TAC文件)、命令行工具twisd
5、Pb
引用:
1、http://www.aosabook.org/en/twisted.html