libcurl 使用记录2(curl_muli的使用)

1.libcurl 提供的easy 接口,只能同步处理请求,处理过程中,curl_easy_perform会阻塞等待。如果想用easy 接口实现并行处理,必须使用调用程序本身实现多线程。

2:libcurl 提供的multi 接口,是基于easy 接口来实现。它通过管理很多个easy接口,来请求时找到一个空闲的easy curl 来进行处理。有没有感觉这个跟linux的select 机制很像,选择满足时间的fd。对,在这里,每个curl 相当于一个fd, libcurl 实现了跟select 特别相近的接口-----参数个数和类型含义一样,但是返回值不同(linux 返回值的fd的个数)

curl_multi_add_handle(multi_handle, handles[i]);---将多个easy handle 注册到multi handle中。
 
  
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); //extracts file descriptor information from a given multi_handle
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);


3:如果select 函数返回了正确的结果,下面就可以调用curl_multi_perform 进行处理了 

curl_multi_perform 函数当有IO事件发生时会立即返回。


你可能感兴趣的:(c++)