是否通过调用CURLOPT_WRITEFUNCTION
的同一线程调用的curl_easy_perform()
为cURL指定了函数?
void read_http()
{
curl_easy_setopt(CURLOPT_WRITEFUNCTION, on_write_data);
curl_easy_perform(hcurl);
}
回调就像
void on_write_data(buff, ...)
{
copy_to(buff, shared_buff);
}
客户端代码看起来像
read_http();
// use shared_buff
问题是read_http()
返回时是否已读取所有http数据?或者它还在进行中吗?
答案 0 :(得分:4)
是的。出于所有实际目的,libcurl是单线程的,永远不会从你调用它的任何其他线程做回调。
libcurl将使用的唯一其他线程(如果以这种方式构建)是名称解析的单独线程,但该线程将永远不会执行任何回调或以其他方式对调用者或API可见。