में धागे विनाशक इन दिनों मैं पीडीएफ Designing MT programs पढ़ रहा हूं। यह बताता है कि उस ऑब्जेक्ट को दायरे से बाहर होने से पहले उपयोगकर्ता को std::thread
कक्षाकी किसी ऑब्जेक्ट पर स्पष्ट रूप से detach()
पर कॉल करना होगा। यदि आप इसे std::terminate()
नहीं कहते हैं तो कॉल किया जाएगा और एप्लिकेशन मर जाएगा।सी ++ 0x बनाम बूस्ट
मैं आमतौर पर सी ++ में थ्रेडिंग के लिए boost::thread
का उपयोग करता हूं। अगर मैं गलत हूं तो मुझे सही करें लेकिन boost::thread
ऑब्जेक्ट स्कोप से बाहर होने पर स्वचालित रूप से अलग हो जाता है।
मुझे लगता है कि बढ़ावा दृष्टिकोण एक आरएआईआई सिद्धांत का पालन करता है और std नहीं करता है।
क्या आप जानते हैं कि इसके लिए कोई विशेष कारण है?
कन्स्ट्रक्टर में join_on_destruction या detach_on_destruction ध्वज क्यों नहीं है, या स्पष्ट रूप से इसके व्यवहार को निर्दिष्ट करने का कोई अन्य तरीका नहीं है। – Puppy
एक दिलचस्प पेपर है [यहां] (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2008/n2802.html) – icecrime
हाय IceCrime। कागज के लिए धन्यवाद। इसलिए मूल रूप से प्रलोभन को मारना threads..in दिलचस्प और वास्तव में 'रक्षात्मक' तरीके से त्रुटियों के बारे में झंडा बढ़ाने का सबसे स्पष्ट तरीका है। :) –