2013-03-04 46 views
4

我正在研究使用双绞线构建多协议应用程序。其中一种协议是bittorrent。由于libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:扭曲和libtorrent - 我需要担心阻止?

  • 当使用libtorrent与扭曲,我需要担心阻止?
  • libtorrent网络层(使用boost.asio,异步网络环路)是否以任何方式干扰扭曲epoll?
  • 我应该在线程中运行libtorrent会话还是针对多进程应用程序设计?

回答

2

我可能能够提供其中一些问题的答案。

所有的libtorrents逻辑,包括网络和磁盘I/O都是在单独的线程中完成的。所以,总而言之,“阻塞”的担忧并不是那么好。假设你的意思是不立即返回libtorrent函数。

一些操作保证立即返回,函数不返回任何状态或信息。但是,返回值的函数必须与libtorrent主线程同步,并且如果它处于负载较重的情况下(特别是在调试模式下进行不变检查且不进行优化时),此同步可能会很明显,尤其是在制作其中的很多时,并经常。

有许多方法可以使用本质上更异步的libtorrent,并且尽量减少使用同步函数的需求。例如,可以单独查询所有种子的状态,而不必查询种子状态更新。异步通知通过pop_alerts()返回。

是否会干扰扭曲的epoll;我无法肯定地说,但似乎不太可能。

我不认为有很多需要通过另一层线程与libtorrent交互,因为所有的工作已经在单独的线程中完成。