Предоставляет потокобезопасный пуловый ресурс памяти для эффективного выделения и освобождения блоков памяти.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8c6c1308f3f6ПроисхождениеОткрытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет потокобезопасный пуловый ресурс памяти для эффективного выделения и освобождения блоков памяти.
Класс ara::core::SynchronizedPoolResource предоставляет потокобезопасный ресурс памяти, который обрабатывает операции выделения через внутренние пулы и запрашивает дополнительную память у вышестоящего восходящего ресурса ([SWS_CORE_00030]). В отличие от стандарта C++, при сбоях выделение памяти не генерирует исключений, а вместо этого возвращает nullptr ([SWS_CORE_00061]). Операции копирования полностью запрещены, тогда как операции перемещения явно поддерживаются. Кроме того, деструктор не является виртуальным, поэтому экземпляры нельзя полиморфно освобождать через указатель на базовый класс.
Контекст
Класс ara::core::SynchronizedPoolResource предоставляет потокобезопасный ресурс памяти для AUTOSAR Adaptive Platform в рамках модуля core. Он основан на концепции std::pmr::synchronized_pool_resource согласно стандарту C++ [mem.res.pool] и открыто наследуется от базового класса MemoryResource. Его основная задача заключается в управлении блоками памяти через внутренние пулы по классам размеров для эффективной и параллельной обработки повторяющихся операций выделения. Если внутреннего запаса недостаточно, экземпляр получает более крупные блоки памяти от вышестоящего восходящего ресурса памяти ([SWS_CORE_00038]).
К типичным партнерам по взаимодействию относятся параллельные потоки приложения, запрашивающие выделение, SynchronizedPoolResource в качестве промежуточного диспетчера пулов, а также базовый MemoryResource в качестве восходящего источника. Все центральные функции доступа и управления, такие как do_allocate, do_deallocate, options и release, спроектированы как потокобезопасные ([SWS_CORE_00061], [SWS_CORE_00041], [SWS_CORE_00039], [SWS_CORE_00037]).
Инстанцирование SynchronizedPoolResource может выполняться через несколько перегрузок конструктора. Если доступны как параметры распределения (PoolOptions), так и восходящий ресурс, инициализация гарантирует полную безопасность относительно исключений и объявлена как noexcept ([SWS_CORE_00030]). Кроме того, существуют конструкторы без параметров ([SWS_CORE_00031]), только с восходящим указателем ([SWS_CORE_00032]) или только с параметрами пула ([SWS_CORE_00033]). Интерпретация: если восходящий указатель не передан, реализация, предположительно, обращается к платформозависимому стандартному ресурсу памяти. Вопрос Q-5dafb414672249dc (открытый)
Что касается отношений владения, класс строго исключает копирование: как конструктор копирования ([SWS_CORE_00034]), так и оператор присваивания копированием ([SWS_CORE_00036]) удалены (=delete). Однако, в отличие от стандарта ISO C++17, AUTOSAR явно определяет для этого класса семантику перемещения: конструктор перемещения ([SWS_CORE_00043]) и оператор присваивания перемещением ([SWS_CORE_00044]) доступны соответственно как noexcept=default.
Центральным аспектом уничтожения является отклонение от стандартного поведения: деструктор ~SynchronizedPoolResource() явно невиртуальный ([SWS_CORE_00035]). Интерпретация: поскольку деструктор не является виртуальным, полиморфное уничтожение через указатель базового класса MemoryResource*, вероятно, приведет к неопределенному поведению; поэтому экземпляры всегда следует освобождать через их конкретный тип. Вопрос Q-5add73880279b024 (открытый) Вызовом release() можно, кроме того, вернуть всю выделенную память восходящему ресурсу, в то время как объект ресурса остается неповрежденным ([SWS_CORE_00037]).
Путь использования
Типичный процесс включает инициализацию, многократное выделение и освобождение блоков памяти, а также окончательную очистку:
Инициализация: приложение создает экземпляр с указанием параметров конфигурации и вышестоящего ресурса памяти ([SWS_CORE_00030]). Активные настройки можно запросить через options() ([SWS_CORE_00039]), восходящий указатель — через upstream_resource() ([SWS_CORE_00038]).
Выделение памяти: запросы памяти обрабатываются защищенно через do_allocate ([SWS_CORE_00061]). Интерпретация: вызов в коде приложения обычно осуществляется не напрямую через защищенный метод do_allocate, а через унаследованный открытый интерфейс allocate базового класса MemoryResource. Вопрос Q-1542a47cdff73dfb (открытый)
Проверка идентичности: через do_is_equal можно определить, эквивалентны ли два ресурса памяти друг другу ([SWS_CORE_00042]).
Освобождение: отдельные области памяти возвращаются в пул через do_deallocate ([SWS_CORE_00041]). При необходимости через release() вся память всех пулов может быть возвращена восходящему ресурсу пакетом ([SWS_CORE_00037]).
При обработке ошибок AUTOSAR Adaptive Platform целенаправленно отклоняется от конвенций об исключениях стандарта C++:
Ошибки выделения памяти: в то время как ISO C++ в случае исчерпания предусматривает генерацию std::bad_alloc, метод do_allocate в AUTOSAR определен как noexcept. Если подходящий блок памяти не может быть предоставлен, метод вместо этого обязательно возвращает нулевой указатель (nullptr) ([SWS_CORE_00061]). Поэтому вызывающие стороны должны проверять каждое возвращаемое значение выделения на nullptr.
Ошибки освобождения памяти: метод do_deallocate также является noexcept. Если при возврате блока памяти возникает ошибка, согласно спецификации она молча игнорируется ([SWS_CORE_00041]).
Риски конструирования: в то время как конструктор с параметрами и восходящим ресурсом является исключениебезопасным ([SWS_CORE_00030]), конструкторы без указания восходящего ресурса или без параметров классифицируются как не исключениебезопасные («not exception safe») ([SWS_CORE_00031], [SWS_CORE_00032], [SWS_CORE_00033]). Интерпретация: если в этих конструкторах происходит сбой внутреннего предоставления структур управления пулом, создание объекта может завершиться ошибкой. Вопрос (открытый)
Настоящее руководство по классу обобщает спецификацию ara::core::SynchronizedPoolResource для 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
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d6b2e58cc49aПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и семантика аллокации
Функция-член do_allocate класса ara::core::SynchronizedPoolResource из заголовочного файла #include "ara/core/memory_resource.h" служит для выделения областей памяти с указанным размером в байтах bytes и выравниванием alignment[SWS_CORE_00061]. В случае успеха синхронный вызов согласно [mem.res.pool] возвращает действительный указатель типа void* на выделенный блок памяти [SWS_CORE_00061].
Обработка ошибок и отклонения
В отношении поведения при ошибках реализация явно отклоняется от требований из [mem.res.pool]: метод объявлен как noexcept и не генерирует исключение std::bad_alloc[SWS_CORE_00061]. При сбое запроса памяти возвращаемый указатель вместо этого обязательно равен nullptr[SWS_CORE_00061]. Поэтому вызывающие стороны должны обязательно проверять возвращаемое значение на нулевой указатель, чтобы надёжно перехватывать ошибки аллокации.
Параллелизм и взаимодействие
Функция специфицирована как exception safe и, в отличие от других ресурсов памяти, как thread-safe[SWS_CORE_00061]. Из-за своей видимости protected на практике она, вероятно, выступает прежде всего как внутреннее переопределение чисто виртуального базового интерфейса do_allocate из ara::core::MemoryResource[SWS_CORE_06566]. Вопрос Q-95ba181693426bfc (открытый) В то время как ara::core::SynchronizedPoolResource обеспечивает безопасность параллельного доступа [SWS_CORE_00061], сопоставимые реализации, такие как ara::core::UnsynchronizedPoolResource::do_allocate[SWS_CORE_00058] и ara::core::MonotonicBufferResource::do_allocate[SWS_CORE_06569], определены как not thread-safe.
Этот текст был сгенерирован системой ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
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
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b07cac0de0a1ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Защищённая функция-член do_deallocate класса ara::core::SynchronizedPoolResource служит для освобождения ранее выделенной области памяти согласно [SWS_CORE_00041]. Её вызов выполняется синхронно и ожидает в качестве параметров указатель p на область памяти, размер bytes в байтах, а также выравнивание памяти alignment. Поскольку функция-член объявлена с видимостью protected, в обычном коде приложения она, предположительно, вызывается не напрямую, а выполняется через открытый интерфейс деаллокации вышестоящего базового класса ara::core::MemoryResource ([SWS_CORE_06567]). Вопрос Q-badea921c907c214 (открытый)
В отношении обработки ошибок и поведения при исключениях спецификация определяет два обязательных отклонения от стандарта:
Функция объявлена как noexcept и полностью исключение-безопасна (exception safe) ([SWS_CORE_00041]).
Если деаллокация завершилась неудачно, возникшие ошибки молча игнорируются ([SWS_CORE_00041]). Не происходит ни генерации исключения, ни возврата кода ошибки.
В области параллелизма реализация в ara::core::SynchronizedPoolResource отличается тем, что она явно специфицирована как потокобезопасная (thread-safe) ([SWS_CORE_00041]). Тем самым она подходит для одновременного вызова из нескольких потоков. Этим она существенно отличается от родственных ресурсов ara::core::UnsynchronizedPoolResource ([SWS_CORE_00059]) и ara::core::MonotonicBufferResource ([SWS_CORE_06570]), которые классифицированы как непотокобезопасные.
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c89ab0c97360ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Защищенная функция-член do_is_equal проверяет равенство экземпляра ara::core::SynchronizedPoolResource с другим ресурсом памяти [SWS_CORE_00042]. Она переопределяет чисто виртуальный метод базового класса из ara::core::MemoryResource[SWS_CORE_06568] согласно спецификации для пуловых ресурсов в [mem.res.pool].
Использование и интерфейс: в качестве параметра передается ссылка на другой объект ara::core::MemoryResource (const MemoryResource &other). Возвращаемое значение типа bool указывает, эквивалентны ли оба ресурса. Интерпретация: из-за видимости protected функция в обычном процессе приложения вызывается не напрямую, а выполняется через открытый метод сравнения базового класса. Вопрос Q-29fb2980d1241fae (открытый)
Обработка ошибок и безопасность: метод объявлен с идентификатором noexcept и специфицирован как exception safe[SWS_CORE_00042]. Не возникает ни исключений, ни специфических кодов ошибок. Выполнение происходит синхронно.
Параллелизм: согласно [SWS_CORE_00042], do_is_equal специфицирован как thread-safe, так что одновременные сравнения из нескольких потоков допустимы без дополнительной внешней синхронизации.
Взаимодействие: функция представляет собой потокобезопасный аналог реализации в ara::core::UnsynchronizedPoolResource[SWS_CORE_00060]. Также ara::core::MonotonicBufferResource предоставляет соответствующее переопределение, которое также обозначено как noexcept[SWS_CORE_06571].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4714ac548826ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член options класса ara::core::SynchronizedPoolResource синхронно возвращает сконфигурированные для ресурса памяти настройки типа PoolOptions[SWS_CORE_00039]. Вызов выполняется без параметров на экземпляре класса и объявлен через заголовочный файл ara/core/memory_resource.h[SWS_CORE_00039]. Поведение согласно спецификации ориентируется на [mem.res.pool][SWS_CORE_00039], что можно интерпретировать как ориентацию на пул-ресурсы стандарта C++. Вопрос Q-9abfddc2cf8dc88c (открытый)
В отношении обработки ошибок и безопасности исключений метод объявлен как noexcept и считается полностью безопасным относительно исключений (exception safe) [SWS_CORE_00039]. Специфические коды ошибок или сообщения в DET или DEM для этой функции запроса отсутствуют.
В отношении параллелизма метод специфицирован как const, а также явно как потокобезопасный (thread-safe) [SWS_CORE_00039]. Таким образом, его можно безопасно вызывать параллельно из нескольких потоков без дополнительных мер синхронизации на уровне приложения.
При взаимодействии внутри ara::core компонент [SWS_CORE_00057] предоставляет несинхронизированный аналог: для ara::core::UnsynchronizedPoolResource существует функция options с идентичными именем и сигнатурой и эквивалентной семантикой согласно [mem.res.pool].
Этот текст был сгенерирован ИИ и служит ориентировочным вспомогательным материалом по использованию.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 32c426df4959ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция-член release() принадлежит классу ara::core::SynchronizedPoolResource и предоставляется через заголовочный файл #include "ara/core/memory_resource.h"[SWS_CORE_00037]. Она имеет сигнатуру void release () noexcept;, не принимает параметров и не имеет возвращаемого значения. Функциональная семантика согласуется с соответствующим использованием в [mem.res.pool][SWS_CORE_00037], посредством чего освобождается память, управляемая ресурсом памяти.
В отношении обработки ошибок функция объявлена как безопасная относительно исключений (exception safe) и noexcept[SWS_CORE_00037]. Исключения C++ не возникают; специфические коды ошибок или отчеты об ошибках через DET либо DEM в объеме спецификации не определены.
Что касается параллелизма, операция явно специфицирована как потокобезопасная (thread-safe) [SWS_CORE_00037]. Поэтому одновременный вызов из нескольких потоков для одного и того же экземпляра ресурса, предположительно, допустим без дополнительных блокировок со стороны приложения. Вопрос Q-3da3b45ca2070b3e (открытый)
Во взаимодействии поведение соответствует функционально аналогичному методу в ara::core::UnsynchronizedPoolResource[SWS_CORE_00065], который также ссылается на [mem.res.pool] и обозначен как noexcept, а также thread-safe. В отличие от этого, аналогичная функция release() из ara::core::MonotonicBufferResource[SWS_CORE_06530] согласно спецификации не является потокобезопасной (not thread-safe), хотя на нее также распространяется гарантия noexcept.
Этот текст был создан ИИ и основан исключительно на данных спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 6f69b7b33ad7Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член upstream_resource() класса ara::core::SynchronizedPoolResource возвращает указатель на базовый вышестоящий ресурс памяти (MemoryResource*) согласно [SWS_CORE_00038]. Вызов выполняется синхронно и требует включения заголовочного файла #include "ara/core/memory_resource.h"[SWS_CORE_00038]. Функция не принимает входных параметров и служит исключительно инспектором вышестоящего блока управления памятью.
Обработка ошибок и безопасность исключений
Метод объявлен как noexcept и согласно спецификации классифицирован как исключение-безопасный (exception safe) [SWS_CORE_00038]. Сбой запроса или генерация исключений исключены; коды ошибок для этого вызова отсутствуют.
Параллелизм и ограничения
Функция специфицирована как const, а также явно как потокобезопасная (thread-safe) [SWS_CORE_00038]. Таким образом, её можно вызывать параллельно из нескольких контекстов выполнения без дополнительной внешней синхронизации.
Взаимодействие
Концепция вышестоящего ресурса памяти согласованно предоставляется в различных реализациях пулов памяти AUTOSAR Adaptive Core:
В ara::core::UnsynchronizedPoolResource функционально идентичный метод [SWS_CORE_00056] также предоставляет указатель на upstream-ресурс, но ориентирован на сценарии пулов без внутренней синхронизации.
В ara::core::MonotonicBufferResource существует соответствующий аналог [SWS_CORE_06531], который также специфицирован как noexcept и потокобезопасный.
Это указание по использованию было сгенерировано автоматически на основе полезной нагрузки AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал