2013-10-05 47 views

回答

1

不管紅寶石版本,EM運行除反應器線程內的EM.defer碼塊的一切(EM.defer結果和誤差塊是在反應器中也是如此),所以是,

定時器,回調和errbacks被保證在反應器(主)線程中運行

0

假設您使用的是MRI Ruby,那麼只有1個「真實/原生」線程,它是主/反應器線程,所有代碼都由該反應器線程執行。所有定時器和回調將在反應器線程中被拾取。

Eventmachine並不是爲使用多個線程作爲其標準操作的一部分而設計的,然而,Eventmachine確實有一個'EM :: defer'方法,它將在不同的'ruby'線程上執行該塊,我相信如果您正在運行多線程能力的ruby,比如jruby或rubinious,那麼這將在「本地」操作系統線程上運行。如果您要執行任何「阻塞」代碼,則應使用「延遲」。