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().
Permite o acesso thread-safe a armazenamentos de arquivos e de chave-valor através dos limites entre threads.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7420a4e54761ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite o acesso thread-safe a armazenamentos de arquivos e de chave-valor através dos limites entre threads.
A classe de template ara::per::SharedHandle serve como abstração de ponteiro inteligente (smart pointer) para armazenamentos de arquivos e de chave-valor, visando permitir o acesso thread-safe através dos limites entre threads. Após a obtenção por meio de funções de fábrica, o estado de validade do handle deve ser verificado por meio de operator bool()[SWS_PER_00398], pois a invocação de outros operadores em um handle vazio ou invalidado por operações de movimentação resulta em comportamento indefinido. Enquanto a desreferenciação para o objeto encapsulado é thread-safe, atribuições e a destruição do handle [SWS_PER_00568] na mesma instância exigem sincronização externa.
Contexto
A classe de template ara::per::SharedHandle representa, no módulo per (Persistency) da AUTOSAR Adaptive Platform, uma abstração de smart pointer para recursos de armazenamento persistente. Ela serve como tipo de retorno padronizado das funções de fábrica OpenFileStorage() e OpenKeyValueStorage(). A principal responsabilidade da classe é coordenar o acesso a armazenamentos de arquivos e de chave-valor através dos limites entre threads e fornecer o encapsulamento necessário para permitir uma implementação thread-safe das rotinas de abertura e acesso ao armazenamento. Os parceiros de interação são threads de trabalho do lado da aplicação, o gerenciamento de persistência bem como o respectivo recurso de armazenamento encapsulado T.
Ciclo de vida
Um SharedHandle é criado tipicamente ao abrir uma instância de armazenamento por meio das interfaces de fábrica de per. Por meio do construtor de cópia [SWS_PER_00369] e do operador de atribuição por cópia [SWS_PER_00370], o handle pode ser duplicado, permitindo que múltiplas instâncias de handle obtenham acesso compartilhado ao mesmo objeto de destino. Se um handle for transferido por meio do construtor de movimentação [SWS_PER_00367] ou da atribuição por movimentação [SWS_PER_00368], o handle de origem mudará para um estado invalidado e não deverá mais ser usado para acessos ao armazenamento.
O estado atual do handle é determinado pelo operador de conversão explícito operator bool()[SWS_PER_00398]: ele retorna true quando uma instância de armazenamento válida é referenciada, e false quando o handle está vazio. A liberação dos recursos do handle ocorre por meio do destrutor ~SharedHandle()[SWS_PER_00568]. Interpretação: o recurso de armazenamento subjacente provavelmente será liberado assim que o último SharedHandle referenciador for destruído. Pergunta Q-00a1798cf43e0ee6 (aberta)
Estados críticos de erro ocorrem primariamente em operações não permitidas sobre handles vazios ou invalidados. De acordo com [SWS_PER_00398], a chamada de quaisquer operadores exceto operator bool() em um handle vazio leva imediatamente a comportamento indefinido (Undefined Behavior). Isso diz respeito em particular a handles de origem após uma construção por movimentação [SWS_PER_00367] ou uma atribuição por movimentação [SWS_PER_00368], pois estes são invalidados e não devem mais ser utilizados.
Este guia baseia-se na especificação AUTOSAR para o módulo per (Adaptive Platform, Release R25-11) e foi elaborado por um assistente de curadoria de IA.
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-low· 2026-10-13 · Original em alemão