मैं reading की आवश्यकता के बारे में आवश्यकता है कि यदि ओपनएसएसएल बहु-थ्रेडेड एप्लिकेशन में उपयोग किया जाता है, तो आपको OpenSSL के साथ थ्रेड पहचान फ़ंक्शन (और एक म्यूटेक्स सृजन फ़ंक्शन) पंजीकृत करना होगा। (ओपनएसएसएल और मल्टी-थ्रेड्स
static unsigned long id_function(void){
return (unsigned long)pthread_self();
}
pthread_self) एक pthread_t देता है, और यह लिनक्स पर काम करता है के बाद से pthread_t बस है:
लिनक्स पर जो OpenSSL द्वारा प्रदान उदाहरण के अनुसार, एक धागा सामान्य रूप से इस तरह एक समारोह के पंजीकरण के द्वारा पहचाना जाता है हस्ताक्षर किए गए लंबे समय का एक टाइपिफ।
विंडोज pthreads, FreeBSD, और अन्य ऑपरेटिंग सिस्टम पर, pthread_t एक struct है, निम्नलिखित संरचना के साथ:
struct {
void * p; /* Pointer to actual object */
unsigned int x; /* Extra information - reuse count etc */
}
यह केवल एक अहस्ताक्षरित लंबे में ढाला नहीं जा सकता है, और जब मैं करने की कोशिश इसलिए, यह एक संकलन त्रुटि फेंकता है। मैंने शून्य * पी लेने और एक हस्ताक्षरित लंबे समय तक कास्टिंग करने की कोशिश की, सिद्धांत पर कि स्मृति सूचक सुसंगत और धागे में अद्वितीय होना चाहिए, लेकिन यह मेरे प्रोग्राम को बहुत दुर्घटनाग्रस्त होने का कारण बनता है।
विंडोज़ पर्थ्रेड या फ्रीबीएसडी या किसी अन्य ऑपरेटिंग सिस्टम का उपयोग करते समय ओपनएसएसएल के साथ थ्रेड पहचान फ़ंक्शन के रूप में मैं पंजीकरण कैसे कर सकता हूं?
इसके अलावा, एक अतिरिक्त प्रश्न के रूप में:
किसी को भी इस भी अगर OpenSSL में संकलित और क्यूटी साथ प्रयोग किया जाता है किया जाना चाहिए अगर पता है, और यदि हां कैसे OpenSSL साथ QThreads रजिस्टर करने के लिए? आश्चर्य की बात है, मुझे क्यूटी के दस्तावेज में जवाब नहीं मिल रहा है।
ठीक है, ऐसा लगता है कि OpenSSL तो की @ # $% एक टुकड़ा है। अगर मैं एक (सिंगल थ्रेडेड) ऐप लिखता हूं जो कुछ कार्य के लिए ओपनएसएसएल का उपयोग करता है, और कोई लाइब्रेरी (डीएलएल) लिखता है जो किसी अन्य कार्य के लिए ओपनएसएसएल का उपयोग करता है - यह कैसे एक दूसरे के बारे में जानना चाहिए ये दो पूरी तरह से असंबंधित घटक हैं अस्तित्व - इस बिंदु पर कि उनमें से एक (एकल धागे होने के बावजूद) को इस थ्रेडिंग कार्यक्षमता प्रदान करने की आवश्यकता है। –