क्या आप थ्रेड का पुन: उपयोग नहीं कर सकते?
आप कर सकते हैं। लेकिन आपको थ्रेड को समाप्त नहीं करना है, बल्कि इसके बजाय अधिक काम की प्रतीक्षा करें। यही एक धागा पूल करता है।
क्या मुझे थ्रेडपूल का उपयोग करना चाहिए?
यदि आप थ्रेड का पुनः उपयोग करना चाहते हैं, तो हाँ।
थ्रेडपूल की तुलना में थ्रेड "लंबे संचालन के लिए बेहतर अनुकूल" क्यों है?
एक थ्रेड पूल की कल्पना करें जो बड़ी संख्या में त्वरित संचालन की सेवा कर रहा है। आप बहुत सारे धागे नहीं लेना चाहते हैं, क्योंकि कंप्यूटर एक समय में केवल इतना ही काम कर सकता है। प्रत्येक लंबे ऑपरेशन से आप थ्रेड पूल पूल से धागे को जोड़ते हैं। तो पूल में या तो बहुत सारे अतिरिक्त धागे हैं या धागे से कम चल सकते हैं। न तो एक कुशल थ्रेड पूल डिजाइन की ओर जाता है।
लंबे परिचालनों के लिए, ऑपरेशन की लागत की तुलना में थ्रेड बनाने और नष्ट करने का ओवरहेड बहुत छोटा है। तो ऑपरेशन के लिए सिर्फ धागे का उपयोग करने का सामान्य नकारात्मक प्रभाव लागू नहीं होता है।
यदि आप धागे का पुन: उपयोग नहीं कर सकते हैं, तो इसका उपयोग क्यों करें (यानी यह क्या फायदे हैं)?
मुझे लगता है कि आप नौकरी के लिए समर्पित धागे का उपयोग कर मतलब है जो तब थ्रेड पूल का उपयोग कर समाप्त हो जाता है। लाभ यह है कि धागे की संख्या हमेशा इस तरह की नौकरियों की संख्या के बराबर होगी। इसका मतलब यह है कि हर बार जब आप नौकरी शुरू करते हैं और हर बार एक थ्रेड को नष्ट करते हैं तो आपको धागा बनाना होता है, लेकिन आपके पास कभी भी अतिरिक्त धागे नहीं होते हैं और न ही आप धागे पर कम चलाते हैं। (यह I/O बाध्य धागे के साथ एक अच्छी बात हो सकती है लेकिन यदि अधिकांश थ्रेड सीपीयू अधिकतर समय से बंधे होते हैं तो यह एक बुरी चीज हो सकती है।)
स्रोत
2012-03-07 23:06:50
मैंने अभी कुछ कोड चेक किया है और मैं हर बार थ्रेड को फिर से बना देता हूं मुझे इसका पुन: उपयोग करने की ज़रूरत है। मैंने ऐसा इसलिए किया क्योंकि मुझे भी मेरे कोड में एक ही त्रुटि मिल रही थी। मेरे मामले में ऐसा करने के लिए यह बहुत महंगा नहीं था इसलिए मैंने आगे की जांच नहीं की। – ChrisF
ThreadPool बनाम धागा के लिए यह [stackoverflow पोस्ट] जाँच [1] [1]: http://stackoverflow.com/questions/230003/thread-vs-threadpool –