2010-09-21 16 views
49

मैं सीबनाम joinable POSIX अलग धागे

  1. में & में शामिल होने के धागे बनाने जब मैं सही शुरू से, एक धागे के रूप अलग बनाना चाहिए के लिए pthread लाइब्रेरी का उपयोग किया गया है? क्या यह किसी भी प्रदर्शन लाभ बनाम एक जुड़ने योग्य धागा प्रदान करता है?

  2. क्या यह एक joinable (डिफ़ॉल्ट रूप से) थ्रेड पर pthread_join() नहीं करना कानूनी है? या क्या ऐसा धागा हमेशा pathread_exit() ing से पहले detach() फ़ंक्शन का उपयोग करना चाहिए?

उत्तर

67
  1. एक अलग धागा बनाने के लिए जब आप जानते हैं कि आप pthread_join() के साथ के लिए इंतजार नहीं करना चाहता होगा। एकमात्र प्रदर्शन लाभ यह है कि जब एक अलग धागा समाप्त हो जाता है, तो संसाधनों को जारी किए जाने से पहले थ्रेड को शामिल होने की प्रतीक्षा करने के बजाय इसके संसाधन तुरंत जारी किए जा सकते हैं।

  2. यह 'कानूनी' है जो एक जुड़ने योग्य धागे में शामिल नहीं है; लेकिन आमतौर पर यह सलाह नहीं दी जाती है क्योंकि (जैसा कि पहले उल्लेख किया गया था) संसाधनों को तब तक जारी नहीं किया जाएगा जब तक कि धागे शामिल नहीं हो जाते हैं, इसलिए यदि आप इसमें शामिल नहीं होते हैं तो वे अनिश्चित काल तक (जब तक प्रोग्राम बाहर निकलते हैं) बंधे रहेंगे।

+0

संदेह: पृथक धागे के मामले में, क्या होगा यदि अलग धागा अलग थ्रेड समाप्त होने से पहले निष्पादित हो जाता है? मुझे लगता है कि यह सभी धागे को मारने की प्रक्रिया को समाप्त कर देगा। तो किस परिदृश्य में पृथक धागे का उपयोग किया जाता है क्योंकि मुझे यह सुनिश्चित करना चाहिए कि अलग थ्रेड निष्पादन समाप्त हो गया है? – Ajax

+0

@Ajax: अनुभवजन्य, यदि मुख्य धागा खत्म होता है, तो प्रोग्राम निकलता है और धागे समाप्त हो जाते हैं। यह, कम से कम, मैक ओएस एक्स (10.10.1 योसमेट) पर व्यवहार प्रतीत होता है। मुझे POSIX दस्तावेज़ में कुछ भी नहीं मिल रहा है जो इंगित करता है कि अगर अन्यथा बाहर निकलें (''' '' 'निकालें()' ''exit()' या '_Exit()' कहा जाता है। यदि मुख्य धागा 'pthread_exit()' करता है, तो अन्य धागे को पूरा करने का मौका मिलता है। –

+0

एक अलग नोट पर: जब आपके पास पहले से ही कुछ अन्य मतदान तंत्र है तो डिटेक्टेबल थ्रेड अच्छे होते हैं; आप परिणाम राज्य की जांच के लिए उसी मतदान तंत्र का उपयोग कर सकते हैं, और इसलिए पता चले कि धागा पूरा हो गया है या नहीं। यह एक मामला है, "क्या यह तैयार है? यदि हां, तो इसका इस्तेमाल करें।" –

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