2013-03-04 41 views
4

我正在研究使用雙絞線構建多協議應用程序。其中一種協議是bittorrent。由於libtorrent是一個相當完整的實現,它的python綁定似乎是一個不錯的選擇。 現在的問題是:扭曲和libtorrent - 我需要擔心阻止?

  • 當使用libtorrent與扭曲,我需要擔心阻止?
  • libtorrent網絡層(使用boost.asio,異步網絡環路)是否以任何方式干擾扭曲epoll?
  • 我應該在線程中運行libtorrent會話還是針對多進程應用程序設計?

回答

2

我可能能夠提供其中一些問題的答案。

所有的libtorrents邏輯,包括網絡和磁盤I/O都是在單獨的線程中完成的。所以,總而言之,「阻塞」的擔憂並不是那麼好。假設你的意思是不立即返回libtorrent函數。

一些操作保證立即返回,函數不返回任何狀態或信息。但是,返回值的函數必須與libtorrent主線程同步,並且如果它處於負載較重的情況下(特別是在調試模式下進行不變檢查且不進行優化時),此同步可能會很明顯,尤其是在製作其中的很多時,並經常。

有許多方法可以使用本質上更異步的libtorrent,並且儘量減少使用同步函數的需求。例如,可以單獨查詢所有種子的狀態,而不必查詢種子狀態更新。異步通知通過pop_alerts()返回。

是否會干擾扭曲的epoll;我無法肯定地說,但似乎不太可能。

我不認爲有很多需要通過另一層線程與libtorrent交互,因爲所有的工作已經在單獨的線程中完成。