libcurl:在C ++中处理多个异步请求

问题描述 投票:-1回答:1

到目前为止,我一直在使用easy_perform,它按预期工作。但是由于超时和单线程应用程序,运行多个操作会有延迟。我正在通过将它们转换为multi_perform接口异步来优化这些调用,尽管我很难理解使用它的正确方法。

据我了解,Flow看起来类似于以下内容:

  1. 为通话创建一个easy_handle

  2. 使用curl_multi_add_handle将此标准简易句柄添加到多堆栈中

  3. curl_multi_perform:这很棘手。

    1. 据我所知,此调用是循环发生的。
    2. 我的应用程序正在调用此API来读取/写入任何现在可以读取或写入的内容,等等。
    3. 如果从先前的调用中更改了running_handles,则存在需要读取的数据,我们应使用curl_multi_info_read进行检索>
  4. 处理易手时清理

    1. curl_multi_remove_handle
    2. curl_easy_cleanup
    3. curl_multi_cleanup

    Q:

  1. 这意味着,我的应用程序需要进行定期轮询以检查是否有要读取的数据?

  2. 有没有办法通过回调来处理?并且回调方法应以异步方式触发我的应用程序中的操作。

  3. 我已经查看过的参考文献:

  1. http://www.godpatterns.com/2011/09/asynchronous-non-blocking-curl-multi.html,它说的是同样的话。如果我错了,请纠正我。

  2. stackoverflow线程及其他相关线程:How to do curl_multi_perform() asynchronously in C++?

到目前为止,我一直在使用easy_perform,它按预期工作。但是由于超时和单线程应用程序,运行多个操作会有延迟。我正在优化...

c++ asynchronous curl libcurl
1个回答
0
投票

了解curl_multi API所需的先决知识是Async Sockets

© www.soinside.com 2019 - 2024. All rights reserved.