Fornece um recurso de memória de pool seguro para threads para alocação e liberação eficientes de blocos de memória.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8c6c1308f3f6ProcedênciaPerguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Fornece um recurso de memória de pool seguro para threads para alocação e liberação eficientes de blocos de memória.
A classe ara::core::SynchronizedPoolResource disponibiliza um recurso de memória seguro para threads que processa alocações por meio de pools internos e solicita memória adicional de um recurso upstream hierarquicamente superior ([SWS_CORE_00030]). Ao contrário do padrão C++, a alocação de memória não lança exceções em caso de falha, retornando nullptr em seu lugar ([SWS_CORE_00061]). Operações de cópia são completamente impedidas, enquanto operações de movimentação são explicitamente suportadas. Além disso, o destrutor não é virtual, razão pela qual as instâncias não devem ser liberadas polimorficamente por meio de um ponteiro da classe base.
Contexto
A classe ara::core::SynchronizedPoolResource fornece um recurso de memória seguro para threads para a AUTOSAR Adaptive Platform dentro do módulo core. Ela baseia-se no conceito de std::pmr::synchronized_pool_resource segundo o padrão C++ [mem.res.pool] e deriva publicamente da classe base MemoryResource. Sua tarefa principal consiste em gerenciar blocos de memória por meio de pools internos de acordo com classes de tamanho, a fim de processar alocações recorrentes de forma eficiente e concorrente. Se o suprimento interno não for suficiente, a instância obtém blocos de memória maiores de um recurso de memória upstream hierarquicamente superior ([SWS_CORE_00038]).
Entre os parceiros de interação típicos estão threads concorrentes de uma aplicação que solicitam alocações, o SynchronizedPoolResource como gerenciador de pool intermediário, bem como uma MemoryResource subjacente como fonte upstream. Todas as funções centrais de acesso e gerenciamento, como do_allocate, do_deallocate, options e release, foram projetadas para serem seguras para threads ([SWS_CORE_00061], [SWS_CORE_00041], [SWS_CORE_00039], [SWS_CORE_00037]).
Diagrama de contexto: interação de threads concorrentes da aplicação, do recurso de pool e da fonte de memória upstream. Fontes: [SWS_CORE_00030], [SWS_CORE_00038].
Ciclo de vida
A instanciação de SynchronizedPoolResource pode ser realizada por meio de várias sobrecargas de construtor. Se tanto opções de alocação (PoolOptions) quanto um recurso upstream estiverem disponíveis, a inicialização garante total segurança contra exceções e é declarada como noexcept ([SWS_CORE_00030]). Além disso, existem construtores sem parâmetros ([SWS_CORE_00031]), apenas com ponteiro upstream ([SWS_CORE_00032]) ou com puras opções de pool ([SWS_CORE_00033]). Interpretação: se nenhum ponteiro upstream for passado, a implementação provavelmente recorre a um recurso de memória padrão específico da plataforma. Pergunta Q-5dafb414672249dc (aberta)
Em relação às relações de posse, a classe exclui estritamente a cópia: tanto o construtor de cópia ([SWS_CORE_00034]) quanto o operador de atribuição por cópia ([SWS_CORE_00036]) estão eliminados (=delete). No entanto, em contraste com o padrão ISO C++17, o AUTOSAR define explicitamente a semântica de movimento para esta classe: um construtor de movimento ([SWS_CORE_00043]) e um operador de atribuição por movimento ([SWS_CORE_00044]) estão disponíveis, cada um como noexcept=default.
Um aspecto central da destruição é o desvio do comportamento padrão: o destrutor ~SynchronizedPoolResource() é explicitamente não virtual ([SWS_CORE_00035]). Interpretação: como o destrutor não é virtual, uma destruição polimórfica por meio de um ponteiro da classe base MemoryResource* provavelmente levaria a um comportamento indefinido; portanto, as instâncias devem ser sempre destruídas por meio de seu tipo concreto. Pergunta Q-5add73880279b024 (aberta) Com a chamada de release(), toda a memória alocada também pode ser devolvida ao recurso upstream, enquanto o objeto de recurso permanece intacto ([SWS_CORE_00037]).
Caminho de utilização
O fluxo típico engloba a inicialização, a alocação e liberação repetidas de blocos de memória, bem como a limpeza final:
Inicialização: A aplicação cria a instância especificando parâmetros de configuração e um recurso de memória hierarquicamente superior ([SWS_CORE_00030]). As configurações ativas podem ser consultadas via options() ([SWS_CORE_00039]), e o ponteiro upstream via upstream_resource() ([SWS_CORE_00038]).
Alocação de memória: As solicitações de memória são processadas de forma protegida via do_allocate ([SWS_CORE_00061]). Interpretação: a chamada no código da aplicação normalmente não ocorre diretamente por meio do método protegido do_allocate, mas sim pela interface pública herdada allocate da classe base MemoryResource. Pergunta Q-1542a47cdff73dfb (aberta)
Verificação de identidade: Por meio de do_is_equal, é possível determinar se dois recursos de memória são equivalentes entre si ([SWS_CORE_00042]).
Liberação: Áreas de memória individuais são devolvidas ao pool via do_deallocate ([SWS_CORE_00041]). Se necessário, toda a memória de todos os pools pode ser devolvida em conjunto ao recurso upstream por meio de release() ([SWS_CORE_00037]).
A AUTOSAR Adaptive Platform desvia-se deliberadamente das convenções de exceção do padrão C++ no tratamento de erros:
Erro de alocação: Enquanto o ISO C++ prevê o lançamento de std::bad_alloc em caso de esgotamento, do_allocate é definido como noexcept no AUTOSAR. Se nenhum bloco de memória adequado puder ser disponibilizado, o método retorna obrigatoriamente um ponteiro nulo (nullptr) em seu lugar ([SWS_CORE_00061]). Os chamadores devem, portanto, verificar cada valor de retorno de alocação em relação a nullptr.
Erro de desalocação: O método do_deallocate também é noexcept. Se ocorrer um erro durante a devolução de um bloco de memória, este é silenciosamente ignorado de acordo com a especificação ([SWS_CORE_00041]).
Riscos de construção: Enquanto o construtor com opções e recurso upstream é seguro quanto a exceções ([SWS_CORE_00030]), os construtores sem indicação de upstream ou sem opções são classificados como não seguros quanto a exceções («not exception safe») ([SWS_CORE_00031], [SWS_CORE_00032], [SWS_CORE_00033]). Interpretação: se a disponibilização interna de estruturas de gerenciamento de pool falhar nesses construtores, a criação do objeto pode falhar. Pergunta (aberta)
Este guia de classe resume a especificação de ara::core::SynchronizedPoolResource para a AUTOSAR Adaptive Release 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
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d6b2e58cc49aProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Uso e semântica de alocação
A função-membro do_allocate da classe ara::core::SynchronizedPoolResource do arquivo de cabeçalho #include "ara/core/memory_resource.h" destina-se à alocação de áreas de memória com o tamanho em bytes bytes e alinhamento alignment especificados [SWS_CORE_00061]. Em caso de sucesso, a chamada síncrona retorna, conforme [mem.res.pool], um ponteiro válido do tipo void* para o bloco de memória alocado [SWS_CORE_00061].
Tratamento de erros e desvios
Em relação ao comportamento de erro, a implementação desvia-se explicitamente dos requisitos de [mem.res.pool]: o método é declarado como noexcept e não lança exceção std::bad_alloc[SWS_CORE_00061]. Em caso de falha da solicitação de memória, o ponteiro retornado é, em vez disso, obrigatoriamente nullptr[SWS_CORE_00061]. Portanto, os chamadores devem obrigatoriamente verificar se o valor de retorno é um ponteiro nulo para capturar erros de alocação de forma confiável.
Concorrência e interação
A função é especificada como exception safe e, ao contrário de outros recursos de memória, como thread-safe[SWS_CORE_00061]. Devido à sua visibilidade protected, na prática ela deve funcionar principalmente como uma sobrescrita interna da interface base puramente virtual do_allocate de ara::core::MemoryResource[SWS_CORE_06566]. Pergunta Q-95ba181693426bfc (aberta) Enquanto ara::core::SynchronizedPoolResource protege o acesso concorrente [SWS_CORE_00061], implementações comparáveis como ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058] e ara::core::MonotonicBufferResource::do_allocate[SWS_CORE_06569] são definidas como not thread-safe.
Este texto foi gerado por um sistema de IA com base na especificação 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
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: b07cac0de0a1ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro protegida do_deallocate da classe ara::core::SynchronizedPoolResource destina-se à liberação de uma área de memória previamente alocada conforme [SWS_CORE_00041]. Sua chamada ocorre de forma síncrona e espera como parâmetros um ponteiro p para a área de memória, o tamanho bytes em bytes e o alinhamento de memória alignment. Como a função-membro é declarada com visibilidade protected, ela provavelmente não é chamada diretamente no código de aplicação regular, mas executada por meio da interface pública de desalocação da classe base superior ara::core::MemoryResource ([SWS_CORE_06567]). Pergunta Q-badea921c907c214 (aberta)
Em relação ao tratamento de erros e ao comportamento de exceção, a especificação define dois desvios obrigatórios do padrão:
A função é declarada como noexcept e totalmente segura para exceções (exception safe) ([SWS_CORE_00041]).
Se a desalocação não for bem-sucedida, os erros ocorridos serão ignorados silenciosamente ([SWS_CORE_00041]). Não há lançamento de exceção nem retorno de código de erro.
No âmbito da concorrência, a implementação em ara::core::SynchronizedPoolResource destaca-se por ser explicitamente especificada como segura para threads (thread-safe) ([SWS_CORE_00041]). Assim, ela é adequada para a chamada simultânea a partir de múltiplas threads. Nisso ela se diferencia substancialmente dos recursos relacionados ara::core::UnsynchronizedPoolResource ([SWS_CORE_00059]) e ara::core::MonotonicBufferResource ([SWS_CORE_06570]), que são classificados como não seguros para threads.
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c89ab0c97360ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro protegida do_is_equal verifica a igualdade de uma instância de ara::core::SynchronizedPoolResource com outro recurso de memória [SWS_CORE_00042]. Ela sobrescreve o método puramente virtual da classe base de ara::core::MemoryResource[SWS_CORE_06568] de acordo com a especificação para recursos de pool em [mem.res.pool].
Uso e interface: Como parâmetro, é passada uma referência para outro objeto ara::core::MemoryResource (const MemoryResource &other). O valor de retorno do tipo bool indica se ambos os recursos são equivalentes. Interpretação: Devido à visibilidade protected, a função não é chamada diretamente no fluxo regular da aplicação, mas é executada por meio do método público de comparação da classe base. Pergunta Q-29fb2980d1241fae (aberta)
Tratamento de erros e segurança: O método é declarado com o identificador noexcept e especificado como exception safe[SWS_CORE_00042]. Não ocorrem exceções nem códigos de erro específicos. A execução ocorre de forma síncrona.
Concorrência: De acordo com [SWS_CORE_00042], do_is_equal é especificado como thread-safe, de modo que comparações simultâneas entre várias threads são permitidas sem sincronização externa adicional.
Interação: A função constitui a contraparte thread-safe da implementação em ara::core::UnsynchronizedPoolResource[SWS_CORE_00060]. Da mesma forma, ara::core::MonotonicBufferResource fornece uma sobrescrita correspondente, que também é identificada como noexcept[SWS_CORE_06571].
Este texto foi gerado por uma IA com base na especificação AUTOSAR Adaptive R25-11.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4714ac548826ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro options da classe ara::core::SynchronizedPoolResource retorna síncronamente as definições configuradas para o recurso de memória do tipo PoolOptions[SWS_CORE_00039]. A chamada é feita sem parâmetros numa instância da classe e é declarada através do cabeçalho ara/core/memory_resource.h[SWS_CORE_00039]. O comportamento baseia-se, segundo a especificação, em [mem.res.pool][SWS_CORE_00039], o que deverá ser interpretado como uma referência aos recursos de pool da norma C++. Pergunta Q-9abfddc2cf8dc88c (aberta)
No que concerne ao tratamento de erros e à segurança face a exceções, o método é declarado como noexcept e é considerado totalmente seguro face a exceções (exception safe) [SWS_CORE_00039]. Não existem códigos de erro específicos ou mensagens para o DET ou DEM para esta função de consulta.
Relativamente à concorrência, o método é especificado como const, bem como expressamente seguro para threads (thread-safe) [SWS_CORE_00039]. Pode, assim, ser chamado em paralelo e em segurança a partir de várias threads sem medidas adicionais de sincronização ao nível do utilizador.
Na interação dentro de ara::core, [SWS_CORE_00057] disponibiliza o equivalente não sincronizado: para ara::core::UnsynchronizedPoolResource existe uma função homónima e com a mesma assinatura options com semântica idêntica de acordo com [mem.res.pool].
Este texto foi gerado por uma IA e serve como guia de utilização orientativo.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 32c426df4959ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função-membro síncrona release() pertence à classe ara::core::SynchronizedPoolResource e é disponibilizada através do ficheiro de cabeçalho #include "ara/core/memory_resource.h"[SWS_CORE_00037]. Possui a assinatura void release () noexcept;, não aceita parâmetros e não possui valor de retorno. A semântica funcional rege-se pela respetiva utilização em [mem.res.pool][SWS_CORE_00037], libertando assim a memória gerida pelo recurso de memória.
Relativamente ao tratamento de erros, a função é declarada como segura contra exceções (exception safe) e noexcept[SWS_CORE_00037]. Não ocorrem exceções C++; códigos de erro específicos ou relatórios de erros através de DET ou DEM não são definidos no âmbito da especificação.
No que diz respeito à concorrência, a operação é expressamente especificada como segura para threads (thread-safe) [SWS_CORE_00037]. Uma chamada simultânea a partir de múltiplas threads sobre a mesma instância de recurso deverá, por conseguinte, ser admissível sem bloqueios adicionais do lado da aplicação. Pergunta Q-3da3b45ca2070b3e (aberta)
Na interação mútua, o comportamento corresponde ao do método funcionalmente idêntico em ara::core::UnsynchronizedPoolResource[SWS_CORE_00065], que remete igualmente para [mem.res.pool] e é identificado como noexcept e thread-safe. Em contrapartida, a função análoga release() de ara::core::MonotonicBufferResource[SWS_CORE_06530] não é, de acordo com a especificação, segura para threads (not thread-safe), embora esteja também sujeita à garantia noexcept.
Este texto foi criado por uma IA e baseia-se exclusivamente nos dados de especificação da AUTOSAR R25-11.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6f69b7b33ad7Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
A função-membro upstream_resource() da classe ara::core::SynchronizedPoolResource fornece um ponteiro para o recurso de memória a montante subjacente (MemoryResource*) de acordo com [SWS_CORE_00038]. A chamada processa-se de forma síncrona e requer a inclusão do ficheiro de cabeçalho #include "ara/core/memory_resource.h"[SWS_CORE_00038]. A função não aceita parâmetros de passagem e serve como puro inspetor para a unidade de gestão de memória a montante.
Tratamento de erros e segurança contra exceções
O método é declarado como noexcept e classificado, de acordo com a especificação, como seguro contra exceções (exception safe) [SWS_CORE_00038]. Uma falha da consulta ou o desencadeamento de exceções estão excluídos; não existem códigos de erro para esta chamada.
Simultaneidade e restrições
A função é especificada como const e explicitamente como segura para threads (thread-safe) [SWS_CORE_00038]. Ela pode, portanto, ser chamada concorrentemente a partir de múltiplos contextos de execução sem sincronização externa adicional.
Interação
O conceito de um recurso de memória upstream é fornecido de forma consistente em diferentes implementações de pool de memória do AUTOSAR Adaptive Core:
Em ara::core::UnsynchronizedPoolResource, o método funcionalmente idêntico [SWS_CORE_00056] também disponibiliza um ponteiro para o recurso upstream, mas é direcionado a cenários de pool não sincronizados internamente.
Em ara::core::MonotonicBufferResource, existe com [SWS_CORE_06531] um equivalente correspondente que também é especificado como noexcept e seguro para threads.
Esta nota de uso foi gerada automaticamente com base no payload do AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão