将curl_easy句柄添加到工作curl_multi_handle

mis*_*231 4 c++ curl libcurl

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

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

我的问题

  1. 如何检查特定线程(已添加到多句柄)现在是否正在下载?我还没有找到任何选项。
  2. 如果特定线程完成下载,它必须再次建立连接并继续下载另一个范围。可以做吗?

Dan*_*erg 5

libcurl 多接口不是线程化的。它在同一线程中进行并行传输!

您可以随时将简单的手柄添加到多手柄中。只需调用curl_multi_perform (),它就会驱动所有添加的简单句柄。您也可以随时移除手柄。

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

另请参阅http://curl.se/libcurl/c/example.html以获取大量 libcurl 示例,其中包括一堆使用多接口的示例。一般多接口“教程”风格文档位于: http: //curl.se/libcurl/c/libcurl-multi.html