gpt4 book ai didi

c - 无论如何要避免在 libcurl 中循环监视多句柄?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:12 24 4
gpt4 key购买 nike

我已经从 libcurl 主页上阅读了一些示例。当通过 curl_multi_perform 下载时,它总是使用循环监控多句柄,如下所示:

curl_multi_add_handle(multi_handle, easy_handle);
do {
curl_multi_wait(…);
curl_multi_perform(multi_handle, &still_running);
} while (still_running);

这让我在程序部分阻塞

我希望 libcurl 在 easy_handle 的任何一个下载完成后做回调

例如:

  • 服务器可以接收请求并将请求解析为 multi_handle异步下载。
  • 服务器在 multi_handle 下载时仍然可以接收请求。这些是独立的(换句话说是异步的)

最佳答案

通常在循环中调用 curl_multi_perform 来完成所有与 curl 相关的任务,例如 http 事务。

您放置代码的方式不会实现使用 libcurl 的异步方式。有多种方法可以实现。

在典型的实现中,您将拥有主循环,您可能会在其中处理许多任务。例如

do
{
execute task1
execute task2
.............
execute taskn
}
while(condition)

在该循环中,您可以调用 curl_multi_perform

所以主循环看起来像

do
{
execute task1
execute task2
.............
execute taskn

curl_multi_perform(curlm, &count);
}
while(condition)

这样您就可以完成所有任务并且 curl_multi_perform 会不时被调用,您将实现使用 libcurl 的异步方式。

请检查文档,根据某些返回值,您可能会避免调用 curl_multi_perform(我记得之前读过)。

关于c - 无论如何要避免在 libcurl 中循环监视多句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com