Twisted誕生於2000年初,做者爲Glyph,目的是爲了開發網絡遊戲。html
Twisted的歷史react
Glyph開始採用Java多線程,來開發Twisted Reality,結果多線程使得開發變得複雜,難以擴展。程序員
出現了死鎖,加鎖出錯,緩存污染等問題。Glyph發現本身打開了問題的大門,他須要本身實現一個網絡編程
引擎,而這與他想開發的遊戲同樣有趣。緩存
而Java的NIO是在2002年纔出現的。安全
Twisted具備的新功能網絡
一、使用基於事件驅動的編程模型,而不是多線程模型。多線程
二、跨平臺:爲主流操做系統平臺暴露出的事件通知系統提供統一的接口。架構
三、「內置電池」的能力:提供流行的應用層協議實現,所以Twisted立刻就可爲開發人員所用。函數
四、符合RFC規範,已經經過健壯的測試套件證實了其一致性。
五、能很容易的配合多個網絡協議一塊兒使用。
六、可擴展。
Twisted架構概覽
事件驅動:
在事件驅動版本的程序中,3個任務交錯執行,但仍然在一個單獨的線程控制中。當處理I/O或者其餘昂貴的操做時,註冊一個回調到事件循環中,而後當I/O操做完成時繼續執行。回調描述了該如何處理某個事件。事件循環輪詢全部的事件,當事件到來時將它們分配給等待處理事件的回調函數。這種方式讓程序儘量的得以執行而不須要用到額外的線程。事件驅動型程序比多線程程序更容易推斷出行爲,由於程序員不須要關心線程安全問題。
reactor模式
reactor架構模式使得事件驅動程序來分離和調度多個客戶端請求。
Twisted 關鍵模塊
一、Deferred
二、Transports
三、Protocols
四、Applications:Service、Application、配置管理(TAC文件)、命令行工具twisd
五、Pb
引用:
一、http://www.aosabook.org/en/twisted.html