एक काफी बड़े सी एप्लिकेशन के अनुरक्षक के रूप में जो MySQL को कई थ्रेड्स से कॉल करता है, मैं कह सकता हूं कि मुझे प्रत्येक थ्रेड में एक नया कनेक्शन बनाने में कोई समस्या नहीं है। कुछ चेतावनी जो मैंने देखी हैं:
- संपादित करें:ऐसा लगता है कि यह बुलेट केवल संस्करण <5.5 पर लागू होता है; अपने उपयुक्त संस्करण के लिए यह पृष्ठ देखें। ए> : जैसा कि आप कहते हैं कि आप पहले से ही कर रहे हैं,
libmysqlclient_r
. के विरुद्ध लिंक करें । - कॉल करें
mysql_library_init()
(एक बार,main()
. से ) यह क्यों आवश्यक है, यह देखने के लिए बहु-थ्रेडेड वातावरण में उपयोग के बारे में दस्तावेज़ पढ़ें। - एक नया
MYSQL
बनाएंmysql_init()
का उपयोग कर संरचना प्रत्येक धागे में। इसकाmysql_thread_init()
आपके लिए।mysql_real_connect()
प्रत्येक थ्रेड के अंदर हमेशा की तरह, इसकी थ्रेड-विशिष्ट MYSQL संरचना के साथ। - यदि आप बहुत सारे थ्रेड बना रहे/नष्ट कर रहे हैं, तो आप
mysql_thread_end()
प्रत्येक थ्रेड के अंत में (औरmysql_library_end()
main()
. के अंत में ) वैसे भी यह अच्छा अभ्यास है।
मूल रूप से, MYSQL
साझा न करें structs या उस संरचना के लिए विशिष्ट बनाया गया कुछ भी (यानी MYSQL_STMT
s) और यह आपकी अपेक्षा के अनुरूप काम करेगा।
यह मेरे लिए एक कनेक्शन पूल बनाने से कम काम जैसा लगता है।