【问题标题】:add curl_easy handles to working curl_multi_handle将 curl_easy 句柄添加到工作 curl_multi_handle
【发布时间】:2011-08-28 02:50:03
【问题描述】:

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

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

我的问题

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

【问题讨论】:

    标签: c++ curl libcurl


    【解决方案1】:

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

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

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

    另请参阅http://curl.se/libcurl/c/example.html 以获取大量 libcurl 示例,包括使用多接口的一堆。通用的多界面“教程”样式文档在这里:http://curl.se/libcurl/c/libcurl-multi.html

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 2023-01-03
      相关资源
      最近更新 更多