在我的 C++ 程序中,我正在从 Web 下载数据。我最多可以并发下载 100 个,但它们通常不会立即开始,而且通常只能有 4 个等等。
目前,我正在使用 curl_easy_init
和 std::async
在后台运行下载。
我已阅读有关 curl_multi_init
的内容。据我了解,它只是 cURL 开发人员制作的异步包装器。我是正确的,还是有任何其他原因,为什么我应该使用它而不是使用 easy_init 的多个异步作业?
最佳答案
curl_multi_
子系统是完全异步的,具有许多优点,例如:
它不会消耗任意数量的线程。每次调用
std::async
都会创建一个线程。如果此线程创建不受限制,您的程序可能会意外耗尽资源。传输可以在您的控制下中断或取消。
这会更有效率,因为所有传输都共享同一个 IO 循环。唯一的争论点是
select()
调用(或select_multi_socket
的等效调用)。
关于C++ - cURL - 将多个 easy_init 与 std::async 一起使用与单个 multi_init 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41622568/