libcurl多线程问题
通过libcurl多线程连接https网站, 会用到openssl, openssl需要通过设置才能线程安全.
如何设置才使libcurl不会在openssl内部crash.
我这边的代码是.
main()
{
curl_global_init
main flow.
curl_global_cleanup
}
thread1~5()
{
CURL *pCurl = curl_easy_init;
curl_set_opt(pCurl, ...);
curl_easy_perform(pCurl);
curl_easy_cleanup;
}
线程越多, 越容易crash在curl调用ssl的地方, 如果设置才没有问题.
callstack
#0 0x0000003602b95948 in lh_free () from /lib64/libcrypto.so.4
#1 0x0000003602b959bc in lh_retrieve () from /lib64/libcrypto.so.4
#2 0x0000003602b97dba in ERR_set_implementation () from /lib64/libcrypto.so.4
#3 0x0000003602b9874e in ERR_get_state () from /lib64/libcrypto.so.4
#4 0x0000003602b98aac in ERR_clear_error () from /lib64/libcrypto.so.4
#5 0x0000003602e1ddc7 in ssl23_connect () from /lib64/libssl.so.4
#6 0x0000000000707882 in Curl_SSLConnect ()
#7 0x0000000000715a3e in Curl_http_connect ()
#8 0x00000000007023c2 in Curl_protocol_connect ()
#9 0x00000000007031a5 in Curl_connect ()
#10 0x000000000070e396 in Curl_connect_host ()
#11 0x000000000070e598 in Curl_perform ()
有什么方案可以解决, 解决了再开贴给500分, 每次只能给100分.