2011-09-01 8 views
7

This question के संबंध में।धागे में अपवाद प्रसार?

सी ++ 11 एक अलग थ्रेड (std::exception_ptr का उपयोग करके) के अपवाद को मार्शल करने की क्षमता को जोड़ता है और इसके प्रचार को फिर से शुरू करता है।

मैं सोच रहा था कि ऐसा प्रचार स्वचालित था, यानी: यदि मैं थ्रेड में अपवाद को संभालने में विफल रहता हूं, तो क्या यह स्वचालित रूप से पैरेंट थ्रेड में प्रचारित होता है?

मुझे कुछ हद तक संदेह है (या इसे किसी भी तरह से join के लिए स्पष्ट रूप से इंतजार करना होगा), लेकिन मैं अभी तक सी ++ 11 पर समझदार नहीं हूं। विशेष रूप से, मुझे लगता है कि std::future के मामले में, यह अपवाद स्वचालित रूप से संग्रहीत कर सकता है।

उत्तर

8

प्रचार thread के साथ स्वचालित नहीं है। यदि कोई धागा फेंकता है, और वह अपवाद पकड़ा नहीं जाता है, तो प्रोग्राम कोई फर्क नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता।

future और shared_future बच्चे के थ्रेड में एक अपरिचित अपवाद संग्रहीत करेगा। get कहा जाता है कि उस अपवाद को स्वचालित रूप से प्रचारित किया जाता है।

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