template <typename T> class SharedHandle final {...};
Handle to a File Storage or Key-Value Storage. A SharedHandle is returned by the functions OpenFileStorage() and OpenKeyValueStorage() and can be passed between threads as needed. It provides the abstraction that is necessary to allow thread-safe implementation of OpenFile Storage() and OpenKeyValueStorage().
Ermöglicht den threadsicheren Zugriff auf Datei- und Schlüssel-Wert-Speicher über Threadgrenzen hinweg.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 7420a4e54761HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht den threadsicheren Zugriff auf Datei- und Schlüssel-Wert-Speicher über Threadgrenzen hinweg.
Die Template-Klasse ara::per::SharedHandle dient als Smart-Pointer-Abstraktion für Datei- und Schlüssel-Wert-Speicher, um einen threadsicheren Zugriff über Threadgrenzen hinweg zu ermöglichen. Nach dem Erhalt über Fabrikfunktionen muss der Gültigkeitszustand des Handles über operator bool()[SWS_PER_00398] geprüft werden, da der Aufruf anderer Operatoren an einem leeren oder durch Move-Operationen invalidierten Handle zu undefiniertem Verhalten führt. Während die Dereferenzierung auf das gekapselte Objekt threadsicher ist, erfordern Zuweisungen und die Zerstörung des Handles [SWS_PER_00568] an derselben Instanz eine externe Synchronisation.
Kontext
Die Template-Klasse ara::per::SharedHandle stellt im Modul per (Persistency) der AUTOSAR Adaptive Platform eine Smart-Pointer-Abstraktion für persistente Speicherressourcen dar. Sie dient als standardisierter Rückgabetyp der Fabrikfunktionen OpenFileStorage() und OpenKeyValueStorage(). Hauptverantwortung der Klasse ist es, den Zugriff auf Datei- und Schlüssel-Wert-Speicher über Threadgrenzen hinweg zu koordinieren und die erforderliche Kapselung bereitzustellen, um eine threadsichere Implementierung der Speicheröffnungs- und Zugriffsroutinen zu ermöglichen. Interaktionspartner sind anwendungsseitige Arbeitsfäden, die Persistenzverwaltung sowie die jeweils gekapselte Speicherressource T.
Lebenszyklus
Ein SharedHandle entsteht typischerweise beim Öffnen einer Speicherinstanz über die Fabrikschnittstellen von per. Durch den Kopierkonstruktor [SWS_PER_00369] sowie den Kopierzuweisungsoperator [SWS_PER_00370] kann das Handle dupliziert werden, wodurch mehrere Handle-Instanzen geteilten Zugriff auf dasselbe Zielobjekt erhalten. Wird ein Handle mittels Move-Konstruktor [SWS_PER_00367] oder Move-Zuweisung [SWS_PER_00368] übertragen, wechselt das Quell-Handle in einen invalidierten Zustand und darf nicht mehr für Speicherzugriffe genutzt werden.
Den aktuellen Status des Handles ermittelt der explizite Konvertierungsoperator operator bool()[SWS_PER_00398]: Er liefert true, wenn eine gültige Speicherinstanz referenziert wird, und false, wenn das Handle leer ist. Die Freigabe der Handle-Ressourcen erfolgt über den Destruktor ~SharedHandle()[SWS_PER_00568]. Interpretation: Die unterliegende Speicherressource dürfte freigegeben werden, sobald das letzte referenzierende SharedHandle zerstört wird. Frage Q-00a1798cf43e0ee6 (offen)
Kritische Fehlerzustände treten primär bei unzulässigen Operationen auf leeren oder invalidierten Handles auf. Laut [SWS_PER_00398] führt der Aufruf jedweder Operatoren außer operator bool() an einem leeren Handle unmittelbar zu undefiniertem Verhalten (Undefined Behavior). Dies betrifft insbesondere Quell-Handles nach einer Move-Konstruktion [SWS_PER_00367] oder einer Move-Zuweisung [SWS_PER_00368], da diese invalidiert werden und nicht weiter verwendet werden dürfen.
Dieser Leitfaden basiert auf der AUTOSAR-Spezifikation für das Modul per (Adaptive Platform, Release R25-11) und wurde durch einen KI-Kurations-Assistenten erstellt.
Move constructor for SharedHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for SharedHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
Move constructor for SharedHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for SharedHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
gemini-3.8-flash-medium· 2026-10-13