cURL CURLOPT_WRITEFUNCTION 是从同一个线程调用的吗?

Is cURL CURLOPT_WRITEFUNCTION called from same thread?

函数是否通过 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() returns 读取了所有 http 数据?还是仍在进行中?

是的。出于所有实际目的,libcurl 是单线程的,并且永远不会从您调用它的线程之外的任何其他线程进行回调。

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