从c++中运行CURL以异步获取多个url

run CURL from C++ to asyncronously fetch several URLs

本文关键字:获取 url 异步 c++ 运行 CURL      更新时间:2023-10-16

我的c++程序的一个逻辑部分必须调用curl (linux程序,而不是库)获取文本文件,并通过管道获得其输出。可能有很多url需要下载。下载时间可能是合理的。该计划旨在"可扩展"和有效。

那么问题是哪种变体更可取:

  1. 运行curl的单个实例,给它一个url列表
  2. 创建一个线程池,每个线程用一个url调用一个curl进程程序,然后聚合线程输出。

换句话说,当下载多个url时,curl是异步的,或者我必须手动实现它。

如果从管道调用cURL,那么首选的解决方案是创建一个线程池。由于线程是相互独立的,它们一次获取多个url。

然而,另一个有效的解决方案是使用cURL库代替管道。下面是libcurl中的一个示例: