廣告
| Twisted的核心 : Reactor |
|
|
|
| 作者是 Victor | |||
| 週三, 11 二月 2009 21:10 | |||
什麼是ReactorReactor是Twisted運作的核心,它實作了Reactor pattern,是用來處理非同步事件的一種模形,在一開始有點難以理解它是如何運作,所以我們用擬人的形容來說明reactor的運作方式 Reactor就像是一個中央指揮所,而非同步事件就像派給別人去做的工作,中央指揮所派出去工作,到完成前它不會想去管這件事的細節,但是一但完成了工作,或是出了差錯,就回排隊向中央指揮所回報,舉個例子:
這些事情同時開始做,過了一陣子李四做完了,便到中央指揮所去排隊報告完成這件事,王五也做完了,就排在李四後面,接著張三也完成了,排在王五後面,而中央指揮所就一一地檢視這些報告,做出相應的命令 而對於網路程式而言,就會像這樣的例子很多非同步的任務,例如下載一個頁面,事情從開始做到發生,就是一個非同步的事件,一個下載網頁頁面的過程,從Reactor的角度來看會像這樣子
如你所見reactor有一個queue,所有事情完成或失敗都會推入queue中,而reactor的主要迴圈就是負責從queue中拿出這些事件一個一個處理,在Twisted中這樣的迴圈就是由這個方法所執行的。 reactor.run() 使用Reactor有什麼樣的好處? 好處在於,所有事情最終處理的thread,都是執行reactor.run()的那個thread,這表示,你不必擔心race condition等事情,因為它們都會在同一個thread裡被完成。
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.


