يوفر مورد ذاكرة تجميعياً آمناً خيطياً للتخصيص الفعال لقوالب الذاكرة وتحريرها.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 8c6c1308f3f6المصدرأسئلة مفتوحة (3)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يوفر مورد ذاكرة تجميعياً آمناً خيطياً للتخصيص الفعال لقوالب الذاكرة وتحريرها.
يوفر الصنف ara::core::SynchronizedPoolResource مورد ذاكرة آمناً خيطياً، والذي يُعالج التخصيصات عبر تجمعات داخلية ويطلب ذاكرة إضافية من مورد منبع أصلي ([SWS_CORE_00030]). وعلى عكس معيار C++، لا يُطلق تخصيص الذاكرة استثناءات عند الفشل، بل يُرجع بدلاً من ذلك nullptr ([SWS_CORE_00061]). عمليات النسخ محظورة تماماً، بينما يتم دعم عمليات النقل صراحةً. بالإضافة إلى ذلك، فإن المدمّر ليس افتراضياً، ولهذا السبب لا يجوز تحرير المثيلات بشكل متعدد الأشكال عبر مؤشر الصنف الأساسي.
السياق
يوفر الصنف ara::core::SynchronizedPoolResource مورد ذاكرة آمناً خيطياً لـ AUTOSAR Adaptive Platform داخل الوحدة core. وهو يعتمد على مفهوم std::pmr::synchronized_pool_resource وفقاً لمعيار C++ [mem.res.pool] ويشتق علناً من الصنف الأساسي MemoryResource. وتتمثل مهمته الأساسية في إدارة قوالب الذاكرة عبر تجمعات داخلية وفقاً لفئات الحجم، لمعالجة التخصيصات المتكررة بكفاءة وتزامن. وإذا لم يكن المخزون الداخلي كافياً، يحصل المثيل على قوالب ذاكرة أكبر من مورد ذاكرة منبع أصلي ([SWS_CORE_00038]).
تشمل أطراف التفاعل النموذجية الخيوط المتزامنة لأحد التطبيقات التي تطلب التخصيصات، و SynchronizedPoolResource بصفته مديراً وسيطاً للتجمع، بالإضافة إلى MemoryResource أساسي كمصدر منبع. تم تصميم جميع وظائف الوصول والإدارة المركزية مثل do_allocate و do_deallocate و options و release لتكون آمنة خيطياً ([SWS_CORE_00061]، [SWS_CORE_00041]، [SWS_CORE_00039]، [SWS_CORE_00037]).
يمكن إجراء تهيئة SynchronizedPoolResource عبر عدة تحميلاّت زائدة لمنشئ الفئة. إذا توفرت كل من خيارات التخصيص (PoolOptions) ومورد المنبع، فإن التهيئة تضمن أماناً كاملاً ضد الاستثناءات وتُعلن كـ noexcept ([SWS_CORE_00030]). بالإضافة إلى ذلك، توجد منشئات بدون معلمات ([SWS_CORE_00031])، أو مع مؤشر منبع فقط ([SWS_CORE_00032])، أو مع خيارات تجمع فقط ([SWS_CORE_00033]). تفسير: إذا لم يتم تمرير مؤشر منبع، فمن المحتمل أن يعتمد التنفيذ على مورد ذاكرة افتراضي خاص بالمنصة. سؤال Q-5dafb414672249dc (مفتوح)
فيما يتعلق بملكية الموارد، يستبعد الصنف النسخ تماماً: فكل من منشئ النسخ ([SWS_CORE_00034]) وعامل إسناد النسخ ([SWS_CORE_00036]) محذوفان (=delete). وعلى عكس معيار ISO-C++17، يحدد AUTOSAR صراحةً دلالات النقل لهذا الصنف: يتوفر كل من منشئ النقل ([SWS_CORE_00043]) وعامل إسناد النقل ([SWS_CORE_00044]) كـ noexcept=default.
أحد الجوانب المركزية لعملية التدمير هو الانحراف عن السلوك القياسي: فالمدمّر ~SynchronizedPoolResource() ليس افتراضياً بشكل صريح ([SWS_CORE_00035]). تفسير: نظراً لأن المدمّر ليس افتراضياً، فمن المرجح أن يؤدي التدمير متعدد الأشكال عبر مؤشر من الصنف الأساسي MemoryResource* إلى سلوك غير محدد؛ لذا ينبغي دائماً تفكيك المثيلات عبر نوعها الفعلي. سؤال Q-5add73880279b024 (مفتوح) علاوة على ذلك، يمكن عبر استدعاء release() إعادة كامل الذاكرة المخصصة إلى مورد المنبع، مع بقاء كائن المورد سليماً ([SWS_CORE_00037]).
مسار الاستخدام
يتضمن المسار النموذجي التهيئة، والتخصيص والتحرير المتكررين لقوالب الذاكرة، بالإضافة إلى التنظيف النهائي:
التهيئة: يُنشئ التطبيق المثيل مع تحديد معلمات التكوين ومورد ذاكرة أصلي ([SWS_CORE_00030]). يمكن الاستعلام عن الإعدادات النشطة عبر options() ([SWS_CORE_00039])، وعن مؤشر المنبع عبر upstream_resource() ([SWS_CORE_00038]).
تخصيص الذاكرة: تتم معالجة طلبات الذاكرة بشكل محمي عبر do_allocate ([SWS_CORE_00061]). تفسير: لا يتم الاستدعاء في كود التطبيق عادةً بشكل مباشر عبر الدالة المحمية do_allocate، بل عبر الواجهة العامة الموروثة allocate للصنف الأساسي MemoryResource. سؤال Q-1542a47cdff73dfb (مفتوح)
التحقق من الهوية: يمكن التحقق عبر do_is_equal مما إذا كان موردا الذاكرة متكافئين ([SWS_CORE_00042]).
التحرير: تتم إعادة نطاقات الذاكرة الفردية إلى التجمع عبر do_deallocate ([SWS_CORE_00041]). وإذا لزم الأمر، يمكن عبر release() إعادة جميع ذاكرة كافة التجمعات مجمعة إلى مورد المنبع ([SWS_CORE_00037]).
تنحرف AUTOSAR Adaptive Platform عمداً عن اصطلاحات الاستثناءات في معيار C++ عند معالجة الأخطاء:
خطأ التخصيص: بينما ينص معيار ISO-C++ في حالة نفاد الذاكرة على إطلاق std::bad_alloc، فإن do_allocate مُعرَّف في AUTOSAR كـ noexcept. وإذا تعذر توفير قالب ذاكرة مناسب، فإن الدالة تُرجع بدلاً من ذلك مؤشراً صفرياً (nullptr) إلزامياً ([SWS_CORE_00061]). لذلك، يجب على الجهات المستدعية فحص كل قيمة إرجاع تخصيص للتأكد من عدم كونها nullptr.
خطأ إلغاء التخصيص: الدالة do_deallocate هي أيضاً noexcept. وإذا حدث خطأ أثناء إعادة قالب ذاكرة، فإنه يُتجاهل بصمت وفقاً للمواصفات ([SWS_CORE_00041]).
مخاطر الإنشاء: بينما يكون المنشئ المزود بخيارات ومورد منبع آمناً ضد الاستثناءات ([SWS_CORE_00030])، فإن المنشئات بدون تحديد منبع أو بدون خيارات تُصنف على أنها غير آمنة ضد الاستثناءات («not exception safe») ([SWS_CORE_00031]، [SWS_CORE_00032]، [SWS_CORE_00033]). تفسير: إذا فشل التوفير الداخلي لهياكل إدارة التجمع في هذه المنشئات، فقد يفشل إنشاء الكائن. سؤال (مفتوح)
يلخص دليل الفئات هذا مواصفات ara::core::SynchronizedPoolResource لإصدار AUTOSAR Adaptive R25-11.
except for the following deviations: 1. The function is noexcept 2. The function returns nullptr instead of (potentially) throwing a std::bad_alloc exception ≙ std::bad_alloc
As per corresponding usage in [mem.res.pool] except for the following deviations: 1. The function is noexcept 2. The function returns nullptr instead of (potentially) throwing a std::bad_alloc exception
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: d6b2e58cc49aالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام ودلالات التخصيص
تُستخدم دالة العضو do_allocate من الفئة ara::core::SynchronizedPoolResource من ملف الرأس #include "ara/core/memory_resource.h" لتخصيص مناطق الذاكرة بالحجم المحدد بالبايت bytes والمحاذاة alignment[SWS_CORE_00061]. في حالة النجاح، يُرجع الاستدعاء المتزامن وفقًا لـ [mem.res.pool] مؤشرًا صالحًا من النوع void* إلى كتلة الذاكرة المخصصة [SWS_CORE_00061].
معالجة الأخطاء والانحرافات
فيما يتعلق بسلوك الأخطاء، ينحرف التطبيق صراحة عن متطلبات [mem.res.pool]: تم التصريح عن الأسلوب بأنه noexcept ولا يُطلق استثناء std::bad_alloc[SWS_CORE_00061]. عند فشل طلب الذاكرة، يكون المؤشر المُرجع بدلاً من ذلك إلزاميًا nullptr[SWS_CORE_00061]. لذلك، يجب على المتصلين فحص قيمة الإرجاع للتأكد من عدم وجود مؤشر فارغ (null pointer) لاعتراض أخطاء التخصيص بشكل موثوق.
التزامن والتفاعل
تم تحديد الدالة على أنها exception safe، وعلى عكس موارد الذاكرة الأخرى، على أنها thread-safe[SWS_CORE_00061]. نظرًا لإمكانية وصولها protected، يُفترض أن تعمل في الممارسة العملية في المقام الأول كتجاوز داخلي للواجهة الأساسية الافتراضية البحتة do_allocate من ara::core::MemoryResource[SWS_CORE_06566]. سؤال Q-95ba181693426bfc (مفتوح) بينما يؤمن ara::core::SynchronizedPoolResource الوصول المتزامن [SWS_CORE_00061]، فإن التطبيقات المماثلة مثل ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058] و ara::core::MonotonicBufferResource::do_allocate[SWS_CORE_06569] معرفة بأنها not thread-safe.
تم إنشاء هذا النص بواسطة نظام ذكاء اصطناعي استنادًا إلى مواصفة AUTOSAR Adaptive R25-11.
As per corresponding usage in [mem.res.pool] except for the following deviations: 1. The function is noexcept 2. If unsuccessful: errors will be silently ignored
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: b07cac0de0a1المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم دالة العضو المحمية do_deallocate من الفئة ara::core::SynchronizedPoolResource لتحرير منطقة ذاكرة تم تخصيصها مسبقًا وفقًا لـ [SWS_CORE_00041]. يتم استدعاؤها بشكل متزامن وتتوقع كمعاملات مؤشرًا p إلى منطقة الذاكرة، والحجم bytes بالبايت بالإضافة إلى محاذاة الذاكرة alignment. نظرًا لأنه تم التصريح عن دالة العضو بإمكانية وصول protected، فمن المحتمل ألا يتم استدعاؤها مباشرة في كود التطبيق العادي، بل يتم تنفيذها عبر الواجهة العامة لإلغاء التخصيص الخاصة بالفئة الأساسية الرئيسية ara::core::MemoryResource ([SWS_CORE_06567]). سؤال Q-badea921c907c214 (مفتوح)
فيما يتعلق بمعالجة الأخطاء وسلوك الاستثناءات، تحدد المواصفة انحرافين إلزاميين عن المعيار:
تم التصريح عن الدالة بأنها noexcept وهي آمنة تمامًا من الاستثناءات (exception safe) ([SWS_CORE_00041]).
إذا لم تكن عملية إلغاء التخصيص ناجحة، فسيتم تجاهل الأخطاء التي حدثت بهدوء ([SWS_CORE_00041]). لا يتم إطلاق استثناء ولا يتم إرجاع رمز خطأ.
في مجال التزامن، يتميز التطبيق في ara::core::SynchronizedPoolResource بأنه محدد صراحة على أنه آمن خيطيًا (thread-safe) ([SWS_CORE_00041]). وبالتالي فهو مناسب للاستدعاء المتزامن من عدة خيوط. وهنا يختلف جوهريًا عن الموارد ذات الصلة ara::core::UnsynchronizedPoolResource ([SWS_CORE_00059]) و ara::core::MonotonicBufferResource ([SWS_CORE_06570])، والتي تم تصنيفها على أنها غير آمنة خيطيًا.
تم توليد هذا النص بواسطة ذكاء اصطناعي استنادًا إلى مواصفة AUTOSAR R25-11.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: c89ab0c97360المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تفحص الدالة العضو المحمية do_is_equal تساوي نسخة من ara::core::SynchronizedPoolResource مع مورد ذاكرة آخر [SWS_CORE_00042]. وهي تتجاوز طريقة الفئة الأساسية الافتراضية الصرفة من ara::core::MemoryResource[SWS_CORE_06568] وفقًا لمواصفة موارد التجمع (Pool) في [mem.res.pool].
الاستخدام والواجهة: يتم تمرير مرجع إلى كائن ara::core::MemoryResource آخر كمعلمة (const MemoryResource &other). تشير قيمة الإرجاع من النوع bool إلى ما إذا كان كلا الموردين متكافئين. تفسير: نظرًا لمستوى الرؤية protected، لا يتم استدعاء الدالة مباشرة في مسار التطبيق العادي، بل يتم تنفيذها عبر طريقة المقارنة العامة للفئة الأساسية. سؤال Q-29fb2980d1241fae (مفتوح)
معالجة الأخطاء والأمان: تم إعلان الطريقة بالمعرّف noexcept وتحديدها كـ exception safe[SWS_CORE_00042]. ولا تحدث استثناءات أو رموز أخطاء محددة. ويتم التنفيذ بشكل متزامن.
التزامن: وفقًا لـ [SWS_CORE_00042]، تم تحديد do_is_equal كـ thread-safe، بحيث يُسمح بالمقارنات المتزامنة عبر خيوط معالجة متعددة دون الحاجة إلى مزامنة خارجية إضافية.
التفاعل: تمثّل الدالة النظير الآمن من حيث خيوط المعالجة للتنفيذ في ara::core::UnsynchronizedPoolResource[SWS_CORE_00060]. وبالمثل، يوفّر ara::core::MonotonicBufferResource تجاوزًا مطابقًا، والذي تم تمييزه أيضًا كـ noexcept[SWS_CORE_06571].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR Adaptive R25-11.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 4714ac548826المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُرجع الدالة العضو options للفئة ara::core::SynchronizedPoolResource الإعدادات المكونة لمورد الذاكرة من النوع PoolOptions بشكل متزامن [SWS_CORE_00039]. يتم الاستدعاء بدون معلمات على نسخة من الفئة ويتم التصريح عنها عبر الترويسة ara/core/memory_resource.h[SWS_CORE_00039]. يستند السلوك وفقًا للمواصفة إلى [mem.res.pool][SWS_CORE_00039]، وهو ما يمكن تفسيره على أنه استناد إلى موارد التجمع (Pool-Resources) في معيار C++. سؤال Q-9abfddc2cf8dc88c (مفتوح)
فيما يتعلق بمعالجة الأخطاء وأمان الاستثناءات، تم التصريح عن الطريقة كـ noexcept وتعتبر آمنة تمامًا من الاستثناءات (exception safe) [SWS_CORE_00039]. ولا توجد رموز أخطاء محددة أو رسائل إلى DET أو DEM لدالة الاستعلام هذه.
فيما يتعلق بالتزامن، تم تحديد الطريقة كـ const وبشكل صريح كآمنة لمؤشرات الترابط (thread-safe) [SWS_CORE_00039]. وبالتالي، يمكن استدعاؤها بأمان وتوازٍ من عدة مؤشرات ترابط دون تدابير مزامنة إضافية على مستوى المستخدم.
في التفاعل داخل ara::core، توفر [SWS_CORE_00057] النظير غير المتزامن: حيث توجد لـ ara::core::UnsynchronizedPoolResource دالة متطابقة في الاسم والتوقيع options مع دلالات متطابقة وفقًا لـ [mem.res.pool].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويُستخدم كدليل إرشادي للاستخدام.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 32c426df4959المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تنتمي دالة العضو المتزامنة release() إلى الفئة ara::core::SynchronizedPoolResource ويتم توفيرها عبر ملف الرأس #include "ara/core/memory_resource.h"[SWS_CORE_00037]. تملك البصمة void release () noexcept;، ولا تقبل أي معاملات وليس لها قيمة إرجاع. تتوافق الدلالات الوظيفية مع الاستخدام المقابل في [mem.res.pool][SWS_CORE_00037]، وبذلك يتم تحرير الذاكرة التي يديرها مورد الذاكرة.
فيما يتعلق بمعالجة الأخطاء، تم التصريح عن الدالة بأنها آمنة من الاستثناءات (exception safe) و noexcept[SWS_CORE_00037]. لا تحدث استثناءات C++؛ ولا يتم تحديد رموز أخطاء معينة أو تقارير أخطاء عبر DET أو DEM ضمن نطاق المواصفة.
فيما يتعلق بالتزامن، تم تحديد العملية صراحة على أنها آمنة خيطيًا (thread-safe) [SWS_CORE_00037]. لذا يُفترض أن يكون الاستدعاء المتزامن من خيوط متعددة على نفس مثيل المورد مسموحًا به دون أقفال إضافية من جانب التطبيق. سؤال Q-3da3b45ca2070b3e (مفتوح)
في إطار التفاعل، يتطابق السلوك مع الأسلوب المكافئ وظيفيًا في ara::core::UnsynchronizedPoolResource[SWS_CORE_00065]، والذي يشير أيضًا إلى [mem.res.pool] ومُصنف على أنه noexcept و thread-safe. في المقابل، فإن دالة release() المماثلة لـ ara::core::MonotonicBufferResource[SWS_CORE_06530] غير آمنة خيطيًا (not thread-safe) وفقًا للمواصفة، على الرغم من أنها تخضع أيضًا لضمان noexcept.
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويستند حصريًا إلى بيانات مواصفات AUTOSAR R25-11.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 6f69b7b33ad7المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تُرجع دالة العضو upstream_resource() من الفئة ara::core::SynchronizedPoolResource مؤشرًا إلى مورد الذاكرة الأولي الأساسي (MemoryResource*) وفقًا لـ [SWS_CORE_00038]. يتم الاستدعاء بشكل متزامن ويتطلب تضمين ملف الرأس #include "ara/core/memory_resource.h"[SWS_CORE_00038]. لا تقبل الدالة أي معاملات تمرير وتعمل كفاحص خالص لوحدة إدارة الذاكرة الرئيسية.
معالجة الأخطاء والأمان من حيث الاستثناءات
تم التصريح عن الأسلوب بأنه noexcept وتصنيفه وفقًا للمواصفة بأنه آمن من الاستثناءات (exception safe) [SWS_CORE_00038]. يُستبعد فشل الاستعلام أو إطلاق الاستثناءات؛ ولا توجد رموز أخطاء لهذا الاستدعاء.
التزامن والقيود
تم تحديد الدالة على أنها const وصراحة بأنها آمنة خيطيًا (thread-safe) [SWS_CORE_00038]. وبالتالي يمكن استدعاؤها بشكل متزامن من سياقات تنفيذ متعددة دون مزامنة خارجية إضافية.
تفاعل
يتم توفير مفهوم مورد الذاكرة الأولي بشكل متسق عبر تطبيقات مجمعات الذاكرة المختلفة في AUTOSAR Adaptive Core:
في ara::core::UnsynchronizedPoolResource، يوفر الأسلوب المتطابق وظيفيًا [SWS_CORE_00056] أيضًا مؤشرًا إلى مورد الـ Upstream، ولكنه موجه لسيناريوهات التجمع غير المتزامنة داخليًا.
في ara::core::MonotonicBufferResource، يوجد نظير مطابق مع [SWS_CORE_06531]، والذي تم تحديده أيضًا على أنه noexcept وآمن خيطيًا.
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا استنادًا إلى حمولة AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني