يوفر مخزنًا مؤقتًا لنقل بيانات حمولة صغيرة خاصة بالتطبيق للقواعد الزمنية المتزامنة.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 44e6e39606c3المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يوفر مخزنًا مؤقتًا لنقل بيانات حمولة صغيرة خاصة بالتطبيق للقواعد الزمنية المتزامنة.
تُستخدم البنية ara::tsync::UserData لنقل بيانات حمولة مدمجة خاصة بالتطبيق في سياق القواعد الزمنية المتزامنة. وتدير مخزنًا مؤقتًا ثابتًا بحد أقصى غير قابل للتغيير يبلغ ثلاثة بايتات، محدد عبر kMaxUserDataSize[SWS_TS_14231]. تكتب التطبيقات بيانات الحمولة في المصفوفة وتحدد عدد البايتات الصالحة فعليًا عبر الحقل size[SWS_TS_14232]. وكقيد محدد رئيسي، يجب على منطق البرنامج التطبيقي التأكد من أن size لا يتجاوز السعة القصوى المحددة أبدًا وتجنب عمليات الوصول إلى مناطق المخزن المؤقت غير المهيأة.
السياق
تُستخدم بنية البيانات ara::tsync::UserData ضمن المجموعة الوظيفية لمزامنة الوقت (tsync) في AUTOSAR Adaptive Platform لتغليف بيانات الحمولة الخاصة بالتطبيق في سياق القواعد الزمنية المتزامنة. تم التصريح عن البنية في ملف الترويسة ara/tsync/synchronized_time_base_status.h. وتتمثل مسؤوليتها الأساسية في توفير مساحة تخزين مدمجة وذات أبعاد ثابتة للبيانات الإضافية التطبيقية التي يتم نقلها أو تقييمها مع معلومات الوقت. الحجم الأقصى لبيانات الحمولة هذه محدد بالثابت الإستاتيكي kMaxUserDataSize بثلاثة بايتات بالضبط [SWS_TS_14231]. ولتخزين بايتات الحمولة الفعلية مؤقتًا، تُستخدم المصفوفة data من النوع ara::core::Array<ara::core::Byte, kMaxUserDataSize>[SWS_TS_14233]. ويُكمَّل هذا المخزن المؤقت بالحقل size، الذي يحدد عدد بايتات بيانات الحمولة الصالحة فعليًا في المخزن المؤقت [SWS_TS_14232]. تفسير: استنادًا إلى موقع التعريف في الترويسة ara/tsync/synchronized_time_base_status.h، يُرجح أن يُستخدم UserData أساسًا كحقل حالة لنقل معلومات إضافية صغيرة متعلقة بالتطبيق مثل أعلام التحكم أو العدادات. سؤال Q-a0fb20686141f042 (مفتوح) وكأطراف تفاعل، تظهر عادةً خدمات توفير الوقت والتطبيقات المستقبِلة التي تستعلم عن حالة قاعدة زمنية متزامنة أو تُمررها.
دورة الحياة
باعتبارها بنية C++ عادية (كائن قيمة)، لا تمتلك UserData دورة حياة داخلية معقدة وتستغني تمامًا عن تخصيصات الذاكرة الديناميكية. تنشأ النسخ عادةً على مكدس الذاكرة (Stack) أو كعنصر بيانات مدمج في بنيات الحالة الأعلى مستوى. يتم التهيئة مباشرةً عبر تهيئة العناصر أو الإسناد القياسي في C++. وفيما يتعلق بملكية البيانات، تخضع البنية لدلالات القيمة (Value Semantics): تمتلك المكونات المنشئة نسختها المحلية بالكامل وتمررها عبر النسخ أو كمرجع إلى الواجهات. ونظرًا لأن UserData لا تطبق آليات مزامنة داخلية أو أقفال كائن المزامنة (Mutex)، فإن الوصول المتزامن للقراءة والكتابة من خيوط متعددة إلى نفس النسخة ليس آمنًا من حيث الخيوط. يجب على التطبيقات تأمين عمليات الوصول المتزامنة عبر تدابير مزامنة خارجية، بينما يمكن استخدام النسخ المستقلة عن بعضها بأمان في السياقات المتزامنة. لا يتطلب التدمير أي تنظيف صريح للموارد، لأن حقل البيانات المتضمن data[SWS_TS_14233] محجوز بشكل إستاتيكي.
مسار الاستخدام
يتضمن مسار الاستخدام النموذجي ملء مخزن البيانات المؤقت وتمريره وتقييمه. في البداية، يُنشئ مكوّن مُرسِل أو موفِّر للحالة نسخة من UserData. بعد ذلك، يتم نسخ بيانات الحمولة إلى المصفوفة data، حيث يُسمح كحد أقصى بشغل kMaxUserDataSize بايت [SWS_TS_14231]، [SWS_TS_14233]. بعد ذلك مباشرة، يضبط المكون الحقل size على العدد الفعلي للبايتات المكتوبة [SWS_TS_14232]. وفي جانب المستقبِل، يتحقق التطبيق المعالِج أولاً من قيمة size[SWS_TS_14232]. وإذا كانت size أكبر من الصفر، يقرأ التطبيق بدقة هذه البادئة الصالحة من المخزن المؤقت data[SWS_TS_14233]. يتم تجاهل القيم الخارجة عن هذا النطاق، أي بدءًا من الفهرس size حتى kMaxUserDataSize - 1، نظرًا لأنها قد تحتوي على بيانات متبقية غير معرفة أو قديمة.
سيناريوهات الأخطاء
تنتج حالات الخطأ في UserData أساسًا عن عدم الاتساق بين تحديد الحجم وسعة المخزن المؤقت. إذا اتخذ الحقل size قيمة تتجاوز الحجم الأقصى المحدد kMaxUserDataSize البالغ ثلاثة بايتات [SWS_TS_14231]، فسيحدث انتهاك لحدود المواصفة. في مثل هذه الحالة، هناك خطر حدوث فيض في المخزن المؤقت أو وصول خارج حدود المصفوفة المحددة عند القراءة التكرارية لـ data[SWS_TS_14233]. ويتمثل خطر إضافي في القراءة الخاطئة لـ data عندما تكون size مساوية للصفر [SWS_TS_14232]، نظرًا لعدم توفر بيانات حمولة صالحة في هذه الحالة. لا تُنشأ رموز الخطأ أو الاستثناءات بواسطة البنية نفسها؛ وبالتالي يقع التحقق من الشروط المسبقة — وخاصة size <= kMaxUserDataSize — بالكامل على عاتق منطق البرنامج المُطبِّق.
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive R25-11. تستند جميع البيانات إلى متطلبات SWS المُشار إليها.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني