2010-11-03 17 views
16

का उपयोग करके थ्रेड पूल बनाना क्या बूस्ट के थ्रेड का उपयोग करके थ्रेड पूल बनाना संभव है? मैं पूरे बूस्ट के libs देख रहा था और मुझे थ्रेड पूल मैनेजर (या ऐसा कुछ नहीं मिला) ... क्या ऐसा करने का कोई तरीका है?बूस्ट

tnx!

+0

यह भी देखें: http://stackoverflow.com/questions/19500404/how-to-create-a-thread-pool- उपयोग-बूस्ट-इन-सी –

+0

मैंने बूस्ट :: एएसओओ का उपयोग करके एक थ्रेडपूल उदाहरण पोस्ट किया। [बढ़ावा साथ पूल उदाहरण थ्रेड :: asio] [1] [1]: http://stackoverflow.com/questions/31835009/c-threadpool-is-not-running-parallel/31835802 # 31835802 – DannyK

+0

संभावित डुप्लिकेट [सी ++ में बढ़ावा का उपयोग करके थ्रेड पूल कैसे बनाएं?] (Https://stackoverflow.com/questions/19500404/how-to-create-a-thread-pool-using-boost- इन-सी) –

उत्तर

8

बूस्ट में एक अनौपचारिक (अभी तक) threadpool है। लेकिन यह स्वयं को लागू करने में कोई समस्या नहीं है, खासकर यदि महान सामान्यता प्राथमिक लक्ष्य नहीं है। आइडिया: आपका थ्रेडपूल टास्कटाइप प्रकार और श्रमिकों की संख्या के साथ parametrized किया जा सकता है। टीपी को हैंडलर फ़ंक्शन दिया जाना चाहिए जो टास्कटाइप लेता है। टीपी में जोड़े गए कार्यों की कतार शामिल है। वास्तविक धागा समारोह सिर्फ कतार से एक कार्य लेता है और पास हैंडलर को कॉल करता है। ऐसा कुछ।

+0

मुझे उम्मीद थी कि वे पहले से ही थ्रेडपूल लाइब्रेरी जोड़ चुके हैं .. कोई विचार अगर इसे जल्द ही जोड़ा जा रहा है? आपके त्वरित उत्तर के लिए बहुत बहुत धन्यवाद! – grich

+0

मुझे निश्चित रूप से पता नहीं है लेकिन मैं अनुमान लगा रहा हूं और उम्मीद कर रहा हूं कि थ्रेडपूल और प्रक्रिया दोनों 1.45 –

+0

में होंगी थ्रेडपूल लाइब्रेरी अच्छी लग रही थी; बहुत खराब दस्तावेज की कमी है (कई पेज TODO बताते हैं और चेतावनी देते हैं कि विवरण पुराना है)। ऐसा लगता है कि इसे 2008 से ज्यादा ध्यान नहीं मिला है। –

34

मुझे पता है कि अगर आपको अभी इसकी आवश्यकता है, तो आपको एक उत्तर स्वीकार कर लिया गया है, और आपको अपना खुद का थ्रेड पूल लिखने के लिए परेशान नहीं किया जा सकता है, आप एक समेकन संकेत के साथ बूस्ट एएसओ io_service का उपयोग करने का प्रयास कर सकते हैं (यानी यह कितने धागे चलाना चाहिए) और उसके बाद इस io_service पर पोस्ट() पोस्ट करें ... बस एक विचार ..

+4

बूस्ट एएसओ का उपयोग करना सही तरीका है। सीधे थ्रेड पूल का प्रबंधन नहीं करना बेहतर है। उसी तरह इंटेल थ्रेडिंग बिल्डिंग ब्लॉक (टीबीबी) करता है। – hackworks

+0

क्या आप इसके बारे में और अधिक जोड़ सकते हैं? यह बहुत दिलचस्प लगता है! – grich

+13

अधिक जानकारी के लिए इस लिंक को देखें: http://think-async.com/Asio/Recipes – Ralf