【问题标题】:Is cURL CURLOPT_WRITEFUNCTION called from same thread?cURL CURLOPT_WRITEFUNCTION 是从同一个线程调用的吗?
【发布时间】:2015-03-26 06:38:58
【问题描述】:

是否通过 CURLOPT_WRITEFUNCTION 指定给 cURL 的函数是从调用 curl_easy_perform() 的同一线程调用的?

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 数据?或者它是否仍在进行中?

【问题讨论】:

    标签: c++ curl libcurl


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多