将curl_easy句柄添加到工作curl_multi_handle

时间:2011-05-18 14:13:05

标签: c++ curl libcurl

我尝试使用CURL库实现多线程下载。

我准备N个线程(下载不同范围的简单句柄)并调用 curl_multi_perform(multiHandle,& running) 之后。

我的问题

  1. 如何检查特定线程(已添加到多手柄)是否正在下载?我没有找到任何选择。
  2. 如果特定线程完成下载,则必须重新建立连接并继续下载另一个范围。有可能吗?

1 个答案:

答案 0 :(得分:4)

libcurl多接口没有线程化。它在同一个线程中进行并行传输!

您可以随时在多把手上添加简易手柄。只需调用curl_multi_perform()然后它就会驱动所有添加的简单句柄。您也可以随时删除句柄。

您应该使用curl_multi_info_read()来确定已完成的句柄。在完成之前,您可以考虑使用它们。如果您想将一个简单的手柄放回多手柄以进行另一次转移,只需将其从手柄中移除(可能设置新选项)并再次添加。

另请参阅http://curl.haxx.se/libcurl/c/example.html了解许多libcurl示例,包括使用多接口的一堆示例。一般的多界面“教程”样式文档在这里:http://curl.haxx.se/libcurl/c/libcurl-multi.html