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

来源:互联网 发布:蓝牙单声道软件下载 编辑:程序博客网 时间:2024/06/08 16:46

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事件发生时会立即返回。


0 0
原创粉丝点击