扭曲和libtorrent - 我需要担心阻止吗?

时间:2013-03-04 10:30:58

标签: python twisted bittorrent libtorrent

我正在研究使用twisted构建多协议应用程序。其中一个协议是bittorrent。由于libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:

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

1 个答案:

答案 0 :(得分:2)

我或许能够为其中一些问题提供答案。

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

保证一些操作立即返回,不返回任何状态或信息的函数。但是,返回某些内容的函数必须与libtorrent主线程同步,如果负载很重(特别是在调试模式中使用不变检查而不进行优化时),这种同步可能会很明显,特别是在制作其中很多时,经常。

有一些方法可以使用本质上更异步的libtorrent,并且一直在努力减少使用同步函数的需求。例如,不是单独查询所有种子的状态,而是可以订阅种子状态更新。异步通知通过pop_alerts()返回。

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

我认为不需要通过另一个线程层与libtorrent进行交互,因为所有的工作都是在不同的线程中完成的。