يوفر قناة غير متزامنة لتمرير القيم أو الأخطاء عبر الخيوط إلى future مقترن.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 5c323bf911dfالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يوفر قناة غير متزامنة لتمرير القيم أو الأخطاء عبر الخيوط إلى future مقترن.
تعمل الفئة ara::core::Promise كنقطة نهاية كتابة غير متزامنة لنقل القيم أو الأخطاء أو النتائج عبر الخيوط إلى حالة مشتركة [SWS_CORE_00341]. يتم الوصول للقراءة عبر Future يمكن استرداده لمرة واحدة فقط، والذي يتم تحريره عند توفير النتيجة [SWS_CORE_00344]. نظرًا لأن الفئة غير قابلة للنسخ، تظل الحالة ملكية فريدة بصرامة عبر دلالات النقل، حيث يؤدي تعيين النتيجة عدة مرات أو استرداد future عدة مرات إلى انتهاكات قياسية.
السياق
تمثل الفئة ara::core::Promise التجسيد المخصص لـ Adaptive Platform للمفهوم std::promise المعروف من معيار C++. تم تعريفها في الترويسة 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).
ومع ذلك، تدعم الفئة دلالات النقل (move). يستولي منشئ النقل على الحالة المشتركة للنسخة المصدر [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: قبل بدء المعالجة غير المتزامنة، يستدعي المنتج get_future()[SWS_CORE_00344]. نظرًا لأنه يُسمح بـ Future مقترن واحد فقط لكل Promise، يجب أن يتم هذا الاستدعاء مرة واحدة فقط بالضبط. يتم تمرير Future المرجع إلى خيط الاستهلاك.
تعيين النتيجة: بعد اكتمال العملية غير المتزامنة، ينقل المنتج النتيجة إلى الحالة المشتركة ويحولها إلى الحالة ready. تتوفر تحميَلات زائدة آمنة بالنسبة للخيوط لكل من عمليات النسخ والنقل لهذا الغرض:
تحدد المواصفة شروطًا مسبقة صارمة لجميع التفاعلات مع الحالة المشتركة، ويؤدي عدم مراعاتها إلى انتهاكات قياسية (Violations):
الاسترداد المتعدد لـ Future: إذا استُدعي get_future() أكثر من مرة لنفس الحالة المشتركة، يحدث الانتهاك IsoStdFutureErrcFutureAlreadyRetrievedViolation[SWS_CORE_00344].
غياب الحالة المشتركة (Shared State): إذا لم تكن النسخة المستدعاة تمتلك حالة مشتركة – على سبيل المثال بعد تنفيذ عملية نقل (Move) –، فإن 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]).
تفسير: من المرجح أن يؤدي التخلي عن الحالة المشتركة عند تدمير النسخة دون تعيين قيمة مسبقًا ([SWS_CORE_00349])، بصورة مماثلة لسلوك C++ القياسي لـ std::promise، إلى تسجيل 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 · الأصل الألماني