يتيح القراءة والكتابة المجمعتين لبيانات الملفات عبر واجهة وصول مشتركة.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 6c41c48fc5a7المصدرأسئلة مفتوحة (3)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتيح القراءة والكتابة المجمعتين لبيانات الملفات عبر واجهة وصول مشتركة.
تجمع الفئة ara::per::ReadWriteAccessor بين واجهتي ReadAccessor وWriteAccessor لإتاحة قراءة بيانات الملفات وكتابتها في AUTOSAR Adaptive Platform عبر كائن مشترك. لا يُسمح بالإنشاء المباشر للمثيلات عبر المنشئ الافتراضي، نظراً لأنه محذوف صراحةً [SWS_PER_00462]. عند تدمير المثيل، يضمن مُدمِّر الكائن المعلن عنه كـ noexcept أماناً كاملاً من الاستثناءات، ولكنه محدد صراحةً بأنه غير آمن لترابط العمليات، وبالتالي يتطلب وصولاً متزامناً [SWS_PER_00598].
السياق
تمثل الفئة ara::per::ReadWriteAccessor في الوحدة per (Persistency) التابعة لـ AUTOSAR Adaptive Platform الواجهة المركزية لقراءة بيانات الملفات وكتابتها على حد سواء. وهي تضم وظائف الوصول المنفصل للقراءة والكتابة من خلال دمج إمكانيات الفئتين الأساسيتين ReadAccessor وWriteAccessor. يتم التصريح عن الفئة عبر ملف الترويسة ara/per/read_write_accessor.h[SWS_PER_00462].
في معمارية الأنواع، تُعرَّف ReadWriteAccessor عبر الوراثة المتعددة كفئة فرعية من ReadAccessor وكذلك WriteAccessor وتُميَّز بالمعرّف final. يمنع هذا إجراء اشتقاق إضافي بواسطة مطوري التطبيقات ويضمن بقاء دلالات الوصول المجمعة دون تغيير. وتبعاً لذلك، تعمل الفئتان الأساسيتان المخصصتان كطرفي تفاعل، حيث يتم إسقاط عقود واجهتيهما المشتركة على طبقة وصول موحدة للملفات.
تخضع دورة حياة مثيل ara::per::ReadWriteAccessor لاشتراطات هيكلية صارمة. ووفقاً لـ [SWS_PER_00462]، فإن المنشئ الافتراضي الخالي من المعلمات محذوف صراحةً (ReadWriteAccessor() = delete;). ولذلك، فإن الإنشاء المباشر دون سياق أو معلمات غير مسموح به. من منظور معماري (تفسير)، يُرجَّح توفير مثيلات هذه الفئة نموذجياً بواسطة وظائف إدارة عليا أو آليات إنشاء تابعة للنظام الفرعي لـ Persistency بمجرد فتح ملف لعمليات القراءة والكتابة المجمعة. سؤال Q-9b390ab33102d524 (مفتوح)
يتم تحرير المثيل عبر مُدمِّر الكائن ~ReadWriteAccessor()، المعلن عنه كـ final وnoexcept[SWS_PER_00598]. يتطلب إنهاء دورة حياة الكائن اهتماماً خاصاً فيما يتعلق بالتزامن: يُصنَّف مُدمِّر الكائن في المواصفات صراحةً بأنه غير آمن لترابط العمليات («not thread-safe») [SWS_PER_00598]. وبالتالي، يجب على البرمجية المستدعية ضمان عدم حدوث أي عمليات قراءة أو كتابة متوازية على المثيل نفسه أثناء تدمير الكائن. وفقاً للتفسير، يُرجَّح أن يكون مُدمِّر الكائن مسؤولاً عند مغادرة نطاق الصلاحية بشكل منظم عن إغلاق واصفات الملفات المفتوحة وتنظيف الحالات الداخلية المتبقية. سؤال Q-49e2fdfd53789afd (مفتوح)
فيما يتعلق بعلاقة الملكية، يقع الكائن نموذجياً ضمن نطاق الصلاحية المحلي للمكون المستخدم أو تتم إدارته عبر هياكل المؤشرات. ونظراً لأن التعديل والتدمير المتزامنين غير مؤمنين، فمن المحتمل (تفسير) عدم جواز مشاركة المثيل بين سياقات تنفيذ متزامنة دون حماية. سؤال (مفتوح)
سيناريوهات الأخطاء
تتجلى حالات الخطأ في التعامل مع ara::per::ReadWriteAccessor في وقت الترجمة وكذلك في وقت التشغيل عبر شروط مسبقة ولاحقة محددة. ويتمثل أحد الشروط المسبقة الساكنة الأساسية في حظر إنشاء المثيلات الافتراضي: نظراً لأن المنشئ الخالي من المعلمات محذوف، فإن أي محاولة للإنشاء المباشر تؤدي إلى خطأ ترجمة فوري [SWS_PER_00462]. ويمنع ذلك وجود كائنات وصول غير مهيأة أو غير صالحة في النظام.
فيما يتعلق بمستوى الاستثناءات، توفر الفئة أماناً مضموناً من الاستثناءات عند التفكيك: يُعرَّف مُدمِّر الكائن كـ noexcept ومحدد بأنه آمن من الاستثناءات («exception safe») [SWS_PER_00598]. ويضمن هذا عدم نشر أي استثناءات C++ إلى الخارج حتى في حال حدوث أخطاء أثناء أعمال التنظيف، مما يضمن الحفاظ على فك مكدس آمن.
ينشأ سيناريو خطأ حرج في وقت التشغيل من افتقار مُدمِّر الكائن لأمان ترابط العمليات وفقاً لـ [SWS_PER_00598]. وإذا تم تدمير الكائن بينما لا يزال خيط عمليات آخر ينفذ عمليات قراءة أو كتابة، يؤدي ذلك إلى سلوك غير محدد أو عدم اتساق في البيانات. وبالتالي، يقع الامتثال للشروط المسبقة المتعلقة بترابط العمليات بالكامل على عاتق تصميم النظام المستدعي.
يستند دليل الفئة هذا إلى مواصفات AUTOSAR Adaptive Platform R25-11 للوحدة Persistency (per).
مخطط الفئات UML
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني