我尝试使用CURL库实现多线程下载。
我准备 N 个线程(下载不同范围的简单句柄),然后调用curl_multi_perform(multiHandle, &running)。
我的问题
libcurl 多接口不是线程化的。它在同一线程中进行并行传输!
您可以随时将简单的手柄添加到多手柄中。只需调用curl_multi_perform (),它就会驱动所有添加的简单句柄。您也可以随时移除手柄。
您应该使用curl_multi_info_read ()来找出哪些句柄已经完成。在它们完成之前,您可以考虑使用它们。如果您想将简单手柄放回多手柄以进行另一次传输,只需将其从手柄中移除(可能设置新选项)并再次添加即可。
另请参阅http://curl.se/libcurl/c/example.html以获取大量 libcurl 示例,其中包括一堆使用多接口的示例。一般多接口“教程”风格文档位于: http: //curl.se/libcurl/c/libcurl-multi.html