Curl: ��: SSL and multithread crash on windows, how to use mutex on windows?
SSL and multithread crash on windows, how to use mutex on windows?
From: mao mao <lmjrd_at_hotmail.com>
Date: Fri, 25 Nov 2016 09:50:48 +0000
Thankyou Thomas and Johan both
to Johan: how to use these two functions
openssl_crypto_locking_callback
openssl_crypto_init_locks
when start new thread using _beginthreadex or createthread or afxbeginthread?
Using boost:
#include <boost/ptr_container/ptr_vector.hpp>
#include <openssl/crypto.h>
#define OPENSSL_THREAD_DEFINES
#include <openssl/opensslconf.h>
#if !defined(OPENSSL_THREADS)
#error OpenSSL needs to be compiled with thread support
#endif
boost::ptr_vector<boost::mutex> openssl_lock_list;
void openssl_crypto_locking_callback(
int mode, int type, const char * const, int
) {
if( mode & CRYPTO_LOCK ) {
openssl_lock_list[type].lock();
} else {
openssl_lock_list[type].unlock();
}
}
void openssl_crypto_init_locks()
{
for(int i = 0; i < CRYPTO_num_locks(); ++i) {
openssl_lock_list.push_back(new boost::mutex());
}
// Not neccessary according to docs, and boost can't really give a pointer or
// integer ID of a thread
// CRYPTO_THREADID_set_callback(openssl_crypto_threadid_callback);
CRYPTO_set_locking_callback(openssl_crypto_locking_callback);
}
Johan de Vries
Software Developer
[http://www.ixon.net/wp-content/uploads/2013/12/logo-default.png]
> SSL and multithread crash on windows, how to use mutex on windows?
Best way is you post a striped down example which crashes.
For me the following works, without a problem.
Once:
curl_global_init(CURL_GLOBAL_DEFAULT);
For each thread:
_beginthread(...);
share = curl_share_init();
curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_SHARE, share);
curl_easy_setopt(curl, CURLOPT_URL, "https://google.com");
curl_easy_perform(curl);
curl_easy_cleanup(curl);
Cheers,
Thomas
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: curl - Mailing List Etiquette
文章来源:https://www.toymoban.com/news/detail-768944.html
-------------------------------------------------------------------
List admin: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: curl - Mailing List Etiquette
Received on 2016-11-25文章来源地址https://www.toymoban.com/news/detail-768944.html
到了这里,关于Curl多线程https访问,崩溃问题修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!