2009-07-27 20 views
5

थ्रेड-पूल को कार्यान्वित करने की अवधारणा क्या है (सी में पीथ्रेड से सहायता के साथ)? थ्रेड पूल से निष्पादित करने के लिए थ्रेड को कैसे आवंटित किया जा सकता है?थ्रेड-पूल क्या है?

उत्तर

9

एक थ्रेड-पूल अनुप्रयोग स्टार्टअप पर बनाए गए थ्रेड की एक निश्चित संख्या का संग्रह है। धागे तब उनसे आने के अनुरोधों की प्रतीक्षा कर बैठते हैं, आमतौर पर एक सेमफोर द्वारा नियंत्रित कतार के माध्यम से। जब कोई अनुरोध किया जाता है, और कम से कम एक थ्रेड इंतजार कर रहा है, तो थ्रेड जागृत हो जाता है, अनुरोध करता है, और सैमफोर पर प्रतीक्षा करने के लिए वापस चला जाता है। यदि कोई धागा उपलब्ध नहीं है, तो अनुरोध तब तक कतारबद्ध हो जाता है जब तक कोई नहीं होता है।

थ्रेड-पूल हर अनुरोध के लिए बस एक नया धागा शुरू करने से संसाधनों के प्रबंधन का एक आम तौर पर अधिक प्रभावी तरीका है। हालांकि, अनुरोधों को लोड करने के आधार पर, कुछ आर्किटेक्चर नए थ्रेड बनाए जाने की अनुमति देते हैं और पूल में जोड़े जाते हैं।

2

एनन के जवाब में जोड़ना मैं यह उल्लेख करना चाहता हूं कि फिक्स्ड थ्रेड पूल हैं जिनमें फ्रेड की संख्या निश्चित है; कैश किए गए थ्रेड पूल जो गतिशील रूप से बढ़ सकते हैं और तब कोई काम उपलब्ध नहीं होने पर सिकुड़ सकते हैं; गतिशील थ्रेड पूल को अधिकतम संख्या में थ्रेड और/या कार्य कतार की अधिकतम लंबाई से भी बाध्य किया जा सकता है। मुझे नहीं लगता कि वास्तव में इस तरह की चीजों के लिए एक निर्धारित शब्दावली है और सी में लिखे गए गैर-निश्चित टीपी का शायद ही कभी सामना करना पड़ता है लेकिन कम से कम किसी को पता होना चाहिए कि निश्चित टीपी एकमात्र तरह का नहीं है।

3

पिछले जवाब में कुछ स्पष्ट करने के लिए:

कारण यह है कि अधिक से अधिक धागे instantiating अक्षमता की ओर जाता है समय स्विचिंग संदर्भ है। ओएस समय-समय पर प्रोसेसर पर दूसरे के लिए एक थ्रेड स्विच करता है। इसमें एक धागे की स्थिति को सहेजना और स्मृति से दूसरे धागे की स्थिति लोड करना शामिल है, इसलिए यह गैर-नगण्य समय, एन एमएस प्रति संदर्भ स्विच लेता है।

उदाहरण के लिए, यदि आपके पास 10 धागे हैं, संदर्भ स्विचिंग लेक्स 10 * एन एमएस। यदि आपके पास 1000 धागे हैं, तो यह 1000 * एन एमएस है। चूंकि समवर्ती धागे की संख्या बढ़ जाती है, अंत में संदर्भ स्विचिंग मल्टीथ्रेडिंग से प्राप्त किसी भी क्षमता को खत्म कर देती है। धागे की सबसे अच्छी संख्या के मामले में आपके आवेदन में एक मीठा स्थान है। एक बार जब आप प्रयोग करके इस मीठे संख्या को निर्धारित कर लेंगे, तो आप अपने थ्रेड पूल अधिकतम आकार को थ्रेड की संख्या में सेट कर सकते हैं, जिससे मल्टीथ्रेडिंग से अधिकतम दक्षता प्राप्त हो सकती है।

+0

यह संभावना नहीं है कि संदर्भ स्विच में 1 एमएस तक का समय लगेगा, आम तौर पर ये हमारी लाइनों के साथ अधिक होते हैं। हालांकि बाकी सब कुछ बहुत अच्छा है। – CrazyCasta

+0

जिन्होंने कहा कि एन एक पूर्णांक था और किसने कहा था> = 1? – Blah0x7B9

+0

इकाइयों का उपयोग एमएस सुझाव देता है कि समय एमएस के आदेश पर होगा। मेरा मानना ​​है कि आपके उत्तर पढ़ने वाले अधिकांश लोग यह नहीं सोचेंगे कि संदर्भ स्विचिंग समय लगभग 1 कहता था। – CrazyCasta

संबंधित मुद्दे