जब एक और Stackoverflow question जवाब देने के लिए कोशिश कर रहा है, मुझे एहसास हुआ कि इस सरल सी ++ 11 टुकड़ा परोक्ष बुला धागा ब्लॉक कर रहा है:भविष्य का विनाशक 'std :: async` अवरुद्ध से क्यों लौटाया गया है?
std::async(std::launch::async, run_async_task)
मेरे लिए
इस एक काम शुरू करने के लिए विहित सी ++ 11 तरीका प्रतीत होते थे परिणाम के बारे में देखभाल किए बिना असीमित रूप से। इसे प्राप्त करने के लिए इसके बजाय किसी को स्पष्ट रूप से स्पष्ट रूप से एक धागा बनाना और अलग करना है (answer निर्दिष्ट प्रश्न के लिए)।
तो मेरा प्रश्न यहां है: क्या सुरक्षा/शुद्धता के संबंध में कोई कारण है कि std::future
के विनाशक को अवरुद्ध करना है? अगर यह get
पर ब्लॉक करता है तो यह पर्याप्त नहीं होगा और अन्यथा, अगर मुझे वापसी मूल्य या अपवाद में कोई दिलचस्पी नहीं है, तो यह केवल आग लगती है और भूल जाती है?
बस अपनी टिप्पणी का उत्तर दिया और यहां आपके पास एक प्रश्न है – texasbruce
इस व्यवहार पर बहुत सी चर्चा हुई थी। निम्नलिखित दस्तावेजों पर नज़र डालें: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3773.pdf और http://www.open-std.org/jtc1/ sc22/wg21/दस्तावेज़/कागजात/2013/n3776.pdf – nosid
@texasbruce: हाँ, क्योंकि यह वास्तव में मुझे खराब करता है। मुझे यकीन था कि यह * करने के लिए * नया सी ++ 11y तरीका है और मुझे वास्तव में यह देखने के लिए आश्चर्य हुआ कि अगर मुझे परिणाम की परवाह नहीं है (केवल अंत में एक नोट में उल्लिखित)। जब तक कि इसके लिए स्पष्ट आवश्यकता न हो, मुझे नहीं लगता कि यह एक अच्छा इंटरफ़ेस है। –