"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > std::async फ़्यूचर्स में ब्लॉकिंग डिस्ट्रक्टर्स क्यों होते हैं?

std::async फ़्यूचर्स में ब्लॉकिंग डिस्ट्रक्टर्स क्यों होते हैं?

2024-11-15 को प्रकाशित
ब्राउज़ करें:873

Why Do std::async Futures Have Blocking Destructors?

ब्लॉक क्यों: std::async द्वारा लौटाए गए फ्यूचर्स के ब्लॉकिंग डिस्ट्रक्टर्स के पीछे कारण

एसिंक्रोनस कार्यों के साथ काम करते समय, डिस्ट्रक्टर std::async द्वारा लौटाया गया भविष्य अपने अवरुद्ध व्यवहार के लिए जाना जाता है, जो इसकी आवश्यकता पर सवाल उठाता है। इस डिज़ाइन विकल्प में गहराई से जाने के लिए, आइए उन चिंताओं और चर्चाओं का पता लगाएं जिनके कारण इसे लागू किया गया।

हर्ब सटर का पेपर, "एसिंक, ~फ्यूचर, और ~थ्रेड," ब्लॉकिंग डिस्ट्रक्टर्स से संबंधित सुरक्षा विचारों पर प्रकाश डालता है। इस व्यवहार के बिना, भविष्य से जुड़ा एक "रन-अवे" थ्रेड अपने संबंधित राज्य के नष्ट होने के बाद भी निष्पादित होता रह सकता है। कार्य पूर्ण होने पर नियंत्रण की कमी संभावित रूप से स्मृति भ्रष्टाचार या अन्य अप्रत्याशित मुद्दों को जन्म दे सकती है।

हंस बोहेम का पेपर, "Async() भविष्य के विध्वंसकों को इंतजार करना चाहिए," इस चिंता का एक ठोस उदाहरण प्रदान करता है। विध्वंसकों को अवरुद्ध किए बिना, अपवाद प्रबंधन या बाहरी घटनाएं कार्य निष्पादन के अपेक्षित प्रवाह को बाधित कर सकती हैं। जैसा कि बोहेम बताते हैं, यह एक सुरक्षा भेद्यता पैदा कर सकता है जहां एक हमलावर स्कोप गार्ड में निरीक्षण का फायदा उठाने के लिए अपवादों के समय में हेरफेर कर सकता है, जिससे स्टैक ओवरराइटिंग और प्रक्रिया अपहरण हो सकता है।

ब्लॉकिंग डिस्ट्रक्टर एक सुरक्षा के रूप में कार्य करता है ये संभावित खतरे, भविष्य के नष्ट होने के बाद संबंधित थ्रेड को निष्पादन जारी रखने से रोकते हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि यह व्यवहार एसिंक्रोनस लॉन्च नीति के साथ std::async द्वारा लौटाए गए वायदा के लिए विशिष्ट है। अन्य फ्यूचर्स, जैसे कि std::promise द्वारा लौटाए गए या समानांतर एल्गोरिदम से फ्यूचर्स, अपने डिस्ट्रक्टर्स में समान अवरोधक व्यवहार प्रदर्शित नहीं करते हैं।

सुरक्षा चिंताओं के बावजूद, std::async फ्यूचर्स का ब्लॉकिंग डिस्ट्रक्टर सी मानकीकरण समिति के भीतर चल रही बहस का विषय रहा है। ब्लॉकिंग व्यवहार को अस्वीकार करने या एसिंक फ्यूचर्स के लिए इसे गैर-मानक बनाने के लिए प्रस्तावित परिवर्तनों को स्वीकार नहीं किया गया है।

संक्षेप में, std::async द्वारा लौटाए गए फ्यूचर्स के ब्लॉकिंग डिस्ट्रक्टर्स सुरक्षा चिंताओं से प्रेरित एक विवादास्पद डिज़ाइन विकल्प है . हालांकि यह अनियंत्रित थ्रेड निष्पादन से संबंधित संभावित मुद्दों को रोकता है, यह उचित सफाई सुनिश्चित करने के लिए थ्रेड जीवनचक्र और स्कोप गार्ड के स्पष्ट प्रबंधन की आवश्यकता का भी परिचय देता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3