2015-03-26 1 views
2

Функция, указанная в cURL через CURLOPT_WRITEFUNCTION, называется из той же нити, которая называется curl_easy_perform()?Вызывается cURL CURLOPT_WRITEFUNCTION из той же темы?

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 был прочитан? или он может продолжаться?

ответ

3

Да, это так. Для всех практических целей libcurl является однопоточным и никогда не будет выполнять обратные вызовы из любого другого потока, кроме того, который вы его вызываете.

Единственный другой поток, который будет использовать libcurl (если он построен таким образом), является отдельным потоком для имени разрешает, но этот поток никогда не будет делать никаких обратных вызовов или иным образом становится видимым для вызывающего или API.

 Смежные вопросы

  • Нет связанных вопросов^_^