kirill_782
@kirill_782
Днем я Маринетт

Насколько безопасно использовать CURL в нескольких потоках?

Имею:
string CScanThread::HTTPReqest( string url )
{
	CURL *curl;
	CURLcode result;
	curl = curl_easy_init( );

	if ( curl )
	{
		curl_easy_setopt( curl, CURLOPT_ERRORBUFFER, m_CURLErrorBuffer );
		curl_easy_setopt( curl, CURLOPT_URL, url );
		curl_easy_setopt( curl, CURLOPT_HEADER, 0 );
		curl_easy_setopt( curl, CURLOPT_CAINFO, "cacert.pem" );
		curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, writer );
		curl_easy_setopt( curl, CURLOPT_WRITEDATA, &m_ResponseBuffer );
		result = curl_easy_perform( curl );
		curl_easy_cleanup( curl );
		if ( result == CURLE_OK )
			return m_ResponseBuffer;

	}

	return string ();

}


Редко но программа вылетает тут:
result = curl_easy_perform( curl );
		curl_easy_cleanup( curl );


Класс выполняется в потоке.
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Просто вылетает? Код ошибки (по которому можно и сообщение получить), любые сообщения и отладка вам помогут.
Вот тут есть какой-то пример многопоточного использования: https://curl.haxx.se/libcurl/c/multithread.html . Возможно вы забыли добавить что-то вроде: curl_global_init(CURL_GLOBAL_ALL); Так-то ограничений на многопоточность нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы