boost::thread
ऑब्जेक्ट का जीवनकाल और मूल धागा का जीवनकाल असंबंधित है। boost::thread
ऑब्जेक्ट किसी भी समय दायरे से बाहर जा सकता है।
boost::thread
वर्ग से documentation
एक फ़ाइल के जीवनकाल एक iostream वस्तु जो फ़ाइल का प्रतिनिधित्व करता है के जीवनकाल से अलग हो सकता बस के रूप में, निष्पादन की एक धागा के जीवनकाल धागे से अलग हो सकता है ऑब्जेक्ट जो निष्पादन के धागे का प्रतिनिधित्व करता है। विशेष रूप से,() में शामिल होने के लिए कॉल के बाद, निष्पादन का धागा अब अस्तित्व में नहीं रहेगा, भले ही थ्रेड ऑब्जेक्ट अपने सामान्य जीवनकाल के अंत तक अस्तित्व में रहे। बातचीत भी संभव है; यदि किसी थ्रेड ऑब्जेक्ट को बिना किसी जोड़ के नष्ट कर दिया जाता है() जिसे पहले बुलाया जाता है, तो निष्पादन का धागा तब तक जारी रहता है जब तक उसका प्रारंभिक कार्य पूरा न हो जाए।
संपादित: तुम सिर्फ एक धागा शुरू करने और कभी नहीं आह्वान join
करने की जरूरत है, तो आप एक समारोह के रूप धागा के निर्माता का उपयोग कर सकते हैं:
// Launch thread.
boost::thread(&do_work);
हालांकि, मैं आप ऐसा संकेत नहीं करते , भले ही आपको लगता है कि आप सुनिश्चित हैं कि थ्रेड main()
से पहले पूरा हो जाएगा।
स्रोत
2010-10-19 17:19:30
गतिशील रूप से धागा क्यों बनाते हैं? –
@ मार्टिन यॉर्क: क्योंकि मैं चर के दायरे को छोड़ने के बाद थ्रेड ऑब्जेक्ट को नष्ट नहीं करना चाहता हूं। – itsvetkov
लेकिन यदि आप इसे केवल दायरे से बाहर निकलने देते हैं तो आप इसे एक्सेस नहीं कर सकते (और इस प्रकार आप रिसाव)। इसका मतलब यह नहीं है कि आप इसके साथ कुछ भी नहीं कर सकते हैं और निष्पादन का वास्तविक धागा अभी भी जिंदा है, इसलिए यह व्यर्थ लगता है। नोट: आपको व्यावहारिक रूप से ** ** कभी भी रॉ रॉइंटर नहीं होना चाहिए। –