2024-06-11 05:27:50 发布
网友
我正在考虑使用twisted构建一个多协议应用程序。其中一个协议是bittorrent。因为libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:
我也许能为其中一些问题提供答案。在
libtorrents的所有逻辑,包括网络和磁盘I/O都是在单独的线程中完成的。所以,总的来说,对“封杀”的关注并不是那么大。假设您的意思是libtorrent函数不能立即返回。在
有些操作保证立即返回,这些函数不返回任何状态或信息。但是,确实返回某些内容的函数必须与libtorrent主线程同步,并且如果它处于重载状态(尤其是在调试模式下构建的具有不变检查和无优化的情况下),这种同步可能会很明显,尤其是在生成许多这样的函数时,而且通常是这样。在
有很多方法可以使用libtorrent,本质上更异步,并且正在努力减少使用同步函数的需要。例如,可以订阅torrent状态更新,而不是单独查询所有torrent的状态。异步通知通过pop_alerts()返回。在
它是否会干扰twisted的epoll;我不能肯定,但它似乎不太可能。在
我认为没有必要通过另一层线程与libtorrent交互,因为所有的工作都已经在单独的线程中完成了。在
我也许能为其中一些问题提供答案。在
libtorrents的所有逻辑,包括网络和磁盘I/O都是在单独的线程中完成的。所以,总的来说,对“封杀”的关注并不是那么大。假设您的意思是libtorrent函数不能立即返回。在
有些操作保证立即返回,这些函数不返回任何状态或信息。但是,确实返回某些内容的函数必须与libtorrent主线程同步,并且如果它处于重载状态(尤其是在调试模式下构建的具有不变检查和无优化的情况下),这种同步可能会很明显,尤其是在生成许多这样的函数时,而且通常是这样。在
有很多方法可以使用libtorrent,本质上更异步,并且正在努力减少使用同步函数的需要。例如,可以订阅torrent状态更新,而不是单独查询所有torrent的状态。异步通知通过pop_alerts()返回。在
它是否会干扰twisted的epoll;我不能肯定,但它似乎不太可能。在
我认为没有必要通过另一层线程与libtorrent交互,因为所有的工作都已经在单独的线程中完成了。在
相关问题 更多 >
编程相关推荐