从相同的线程调用cURL CURLOPT_WRITEFUNCTION吗?

时间:2015-03-26 06:38:58

标签: c++ curl libcurl

是否通过调用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数据?或者它还在进行中吗?

1 个答案:

答案 0 :(得分:4)

是的。出于所有实际目的,libcurl是单线程的,永远不会从你调用它的任何其他线程做回调。

libcurl将使用的唯一其他线程(如果以这种方式构建)是名称解析的单独线程,但该线程将永远不会执行任何回调或以其他方式对调用者或API可见。