थ्रेड्स के पार किसी संबद्ध फ्यूचर को मान या त्रुटियाँ पास करने के लिए एक एसिंक्रोनस चैनल प्रदान करता है।
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 5c323bf911dfउद्गमखुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
थ्रेड्स के पार किसी संबद्ध फ्यूचर को मान या त्रुटियाँ पास करने के लिए एक एसिंक्रोनस चैनल प्रदान करता है।
वर्ग ara::core::Promise मानों, त्रुटियों या परिणामों को थ्रेड्स के पार एक साझा स्थिति में स्थानांतरित करने के लिए एक एसिंक्रोनस राइट-एंडपॉइंट के रूप में कार्य करता है [SWS_CORE_00341]। पढ़ने की पहुँच केवल एक बार प्राप्त करने योग्य Future के माध्यम से होती है, जो परिणाम प्रदान किए जाने पर जारी की जाती है [SWS_CORE_00344]। चूंकि वर्ग गैर-प्रतिलिपि योग्य है, स्थिति मूव सिमेंटिक्स के माध्यम से पूरी तरह से अद्वितीय स्वामित्व में रहती है, जिसमें परिणाम को कई बार सेट करना या फ्यूचर को कई बार प्राप्त करना मानकीकृत उल्लंघनों की ओर ले जाता है।
संदर्भ
वर्ग ara::core::Promise C++ मानक से ज्ञात अवधारणा std::promise के Adaptive-Platform-विशिष्ट रूप का प्रतिनिधित्व करता है। इसे हेडर ara/core/future.h में टेम्पलेट Promise<T, E = ErrorCode> के रूप में परिभाषित किया गया है और यह एक साझा स्थिति (shared state) के एसिंक्रोनस राइट-एंडपॉइंट के रूप में कार्य करता है। इस चैनल के माध्यम से, एक निर्माता थ्रेड्स के पार या तो एक परिकलित आउटपुट मान, एक त्रुटि या एक समेकित ara::core::Result पास करता है। संबंधित प्राप्तकर्ता पक्ष एक संबद्ध ara::core::Future के माध्यम से परिणाम तक पहुँचता है, जिसे इंस्टेंस विधि get_future के माध्यम से पुनर्प्राप्त किया जाता है [SWS_CORE_00344]। मानक C++ तंत्र के विपरीत, जो मुख्य रूप से अपवादों पर आधारित है, AUTOSAR Adaptive त्रुटि-टाइप किए गए प्रतिमान को स्थापित करता है: यदि त्रुटि प्रकार E को ara::core::ErrorCode के असमान चुना जाता है, तो विनिर्देश संकलन त्रुटि को बाध्य करता है।
जीवनचक्र
एक इंस्टेंस नियमित रूप से पैरामीटर रहित डिफ़ॉल्ट कंस्ट्रक्टर के माध्यम से बनाया जाता है, जो std::promise के संगत कंस्ट्रक्टर की तरह व्यवहार करता है, थ्रेड-सुरक्षित है और एक नई साझा स्थिति स्थापित करता है [SWS_CORE_00341]। इस स्थिति पर अद्वितीय स्वामित्व की गारंटी के लिए, कॉपी संचालन पूरी तरह से निषिद्ध हैं: कॉपी कंस्ट्रक्टर [SWS_CORE_00350] और कॉपी असाइनमेंट ऑपरेटर [SWS_CORE_00351] दोनों को हटाए गए (delete) के रूप में घोषित किया गया है।
हालाँकि, यह वर्ग मूव सिमेंटिक्स का समर्थन करता है। मूव कंस्ट्रक्टर स्रोत इंस्टेंस [SWS_CORE_00342] की साझा स्थिति को संभालता है। मूव असाइनमेंट के मामले में, लक्ष्य इंस्टेंस अपनी पिछली साझा स्थिति को छोड़ देता है और स्वैप ऑपरेशन के समान पास किए गए ऑब्जेक्ट की स्थिति को संभालता है [SWS_CORE_00343]। इसके अतिरिक्त, विधि swap किसी अन्य इंस्टेंस के साथ आंतरिक स्थिति की अदला-बदली को सक्षम बनाती है [SWS_CORE_00352]। डिस्ट्रक्टर के माध्यम से नष्ट होने पर, अभी भी रखी गई साझा स्थिति जारी की जाती है या छोड़ दी जाती है [SWS_CORE_00349]। जबकि डिफ़ॉल्ट कंस्ट्रक्टर थ्रेड-सुरक्षित डिज़ाइन किया गया है [SWS_CORE_00341], मूव संचालन, असाइनमेंट, स्वैप और विनाश थ्रेड-सुरक्षित नहीं हैं ([SWS_CORE_00342], [SWS_CORE_00343], [SWS_CORE_00352], [SWS_CORE_00349])।
एक विशिष्ट प्रावधान प्रवाह में निम्नलिखित चरण शामिल हैं:
निर्माण: निर्माता एक ara::core::Promise<T, E> को इंस्टेंटिएट करता है [SWS_CORE_00341]।
Future प्राप्त करना: एसिंक्रोनस प्रोसेसिंग शुरू होने से पहले, प्रोड्यूसर [SWS_CORE_00344] पर get_future() को कॉल करता है। चूंकि प्रति Promise केवल एक संबद्ध Future की अनुमति है, इसलिए यह कॉल ठीक एक बार की जानी चाहिए। लौटाया गया Future कंज्यूम करने वाले थ्रेड को सौंप दिया जाता है।
परिणाम सेट करना: एसिंक्रोनस ऑपरेशन पूरा होने के बाद, प्रोड्यूसर परिणाम को साझा स्थिति (shared state) में स्थानांतरित करता है और इसे ready स्थिति में ले आता है। इसके लिए कॉपी और मूव ऑपरेशन्स हेतु थ्रेड-सुरक्षित ओवरलोड क्रमशः उपलब्ध हैं:
विनिर्देश साझा स्थिति के साथ सभी इंटरैक्शन के लिए सख्त पूर्व-शर्तों को परिभाषित करता है, जिनका अनुपालन न करने पर मानकीकृत उल्लंघन (Violations) होते हैं:
Future का एकाधिक बार प्राप्त किया जाना: यदि समान साझा स्थिति के लिए get_future() को एक से अधिक बार कॉल किया जाता है, तो उल्लंघन IsoStdFutureErrcFutureAlreadyRetrievedViolation घटित होता है [SWS_CORE_00344]।
अनुपलब्ध Shared State: यदि कॉल किए गए इंस्टेंस में कोई साझा स्थिति नहीं है – उदाहरण के लिए किसी मूव ऑपरेशन को निष्पादित करने के बाद –, तो get_future() के कारण IsoStdFutureErrcNoStateViolation होता है [SWS_CORE_00344]। इस स्थिति में मेथड्स set_value, SetError और SetResult उल्लंघन PromiseNoSharedStateToSetViolation को ट्रिगर करते हैं ([SWS_CORE_00345], [SWS_CORE_00353], [SWS_CORE_00355])।
अपवाद सुरक्षा: मेथड्स set_value, SetError और SetResult सशर्त रूप से अपवाद-सुरक्षित (conditionally exception safe) हैं। वे कोई अपवाद नहीं फेंकते हैं, बशर्ते प्रकार T और E के कंस्ट्रक्टर्स को nothrow के रूप में घोषित किया गया हो ([SWS_CORE_00345], [SWS_CORE_00353], [SWS_CORE_00355])।
Interpretation: पूर्व मान असाइनमेंट ([SWS_CORE_00349]) के बिना इंस्टेंस के नष्ट होने पर साझा स्थिति को छोड़ देने से, std::promise के C++ मानक व्यवहार के अनुरूप, संभवतः एक संबद्ध Future द्वारा पढ़ने का प्रयास किए जाने पर संबंधित त्रुटि इवेंट पंजीकृत होगा। प्रश्न Q-fd013bb17a591af9 (खुला)
यह गाइड पूरी तरह से AUTOSAR Adaptive (रिलीज़ R25-11) की विनिर्देश आवश्यकताओं पर आधारित है।
Return an associated Future with the same shared state as *this The returned Future is set as soon as this Promise receives the result, value, or an error. This fuction must only be called once as it is not allowed to have multiple Futures per Promise.
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
error
the error to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
error
the error to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
result
the result to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
result
the result to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
Return an associated Future with the same shared state as *this The returned Future is set as soon as this Promise receives the result, value, or an error. This fuction must only be called once as it is not allowed to have multiple Futures per Promise.
IsoStdFutureErrc- If the function is called more than once on the same shared FutureAlreadyRe- state. trievedViolation IsoStdFutureErrc- If *this has no shared state. NoStateViolation
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
value
the value to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
IsoStdFutureEr- If the shared state already has a stored value or error. rcPromiseAl- readySatisfiedVio- lation PromiseNoShared- If *this has no shared state. StateToSetViola- tion
Parameter (in)
Parameter
Beschreibung
value
the value to store
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल