所有的libcurl首先是thread safe:
libcurl的設計和實現完全線程安全的
正如所有你需要做的這個官方文件指出的是:
從不在多個線程之間共享libcurl句柄。您應該在任何給定的時間在一個單獨的線程中只使用一個句柄。
另外也有這個official FAQ entry,如果你打算使用SSL提供一些更多的精度,例如:如果您在多線程環境中使用OpenSSL的供電libcurl的
,你需要以提供一個或兩個鎖定功能
正如你可以看到有其示出了多線程使用容易手柄的正式例如:見multithread.c:
/* This is the callback executed when a new threads starts */
static void *pull_one_url(void *url)
{
CURL *curl;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_perform(curl); /* ignores error */
curl_easy_cleanup(curl);
return NULL;
}
/* ... */
/* This is the main loop that creates `NUMT` threads for parallel fetching */
for(i=0; i< NUMT; i++) {
error = pthread_create(&tid[i],
NULL, /* default attributes please */
pull_one_url,
(void *)urls[i]);
/* ... */
}
因此,請隨時舉出這個例子。
最後請記住,libcurl還提供所謂的multi interface,其中提供使用單個線程的多個傳輸。根據您的使用情況,您可能會發現它也很方便。
編輯
關於OpenSSL的+多線程有具體負責人的例子,可以幫助:
非常好的答案,謝謝。我在理解這一點時遇到了一些問題:http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION我沒有任何openssl.h頭文件,我下載了一個預編譯的二進制文件v0。對於Win64位爲9.8r。你有這樣的例子嗎?再次感謝。 – jensa 2015-02-24 14:40:18
我會說這是值得一個(新)專用問題。 – deltheil 2015-02-24 18:38:30
請參閱下面的答案。 – jensa 2015-02-24 18:48:04