std::pmr::synchronized_pool_resource
Определён в заголовочном файле <memory_resource> | ||
|---|---|---|
class synchronized_pool_resource : public std::pmr::memory_resource; | (начиная с C++17) |
Класс std::pmr::synchronized_pool_resource — это универсальный класс ресурса памяти со следующими свойствами:
- Он владеет выделенной памятью и освобождает её при уничтожении, даже если для некоторых выделенных блоков не был вызван
deallocate. - Он состоит из набора пулов, обслуживающих запросы для блоков разного размера. Каждый пул управляет набором фрагментов, которые затем делятся на блоки одинакового размера.
- Вызовы
do_allocateнаправляются в пул, обслуживающий блоки наименьшего размера, достаточного для запрошенного размера. - Исчерпание памяти в пуле приводит к тому, что следующий запрос на выделение памяти для этого пула выделяет дополнительный фрагмент памяти из вышестоящего распределителя для пополнения пула. Размер получаемого фрагмента растёт геометрически.
- Запросы на выделение блоков, превышающих наибольший размер блока, обслуживаются непосредственно вышестоящим распределителем.
- Наибольший размер блока и максимальный размер фрагмента можно настроить, передав конструктору структуру
std::pmr::pool_options.
К synchronized_pool_resource можно обращаться из нескольких потоков без внешней синхронизации; для снижения затрат на синхронизацию могут использоваться пулы, специфичные для каждого потока. Если к ресурсу памяти обращается только один поток, unsynchronized_pool_resource работает эффективнее.
Функции-члены
создаёт synchronized_pool_resource (открытая функция-член) |
|
|
[virtual] | уничтожает synchronized_pool_resource, освобождая всю выделенную память (открытая виртуальная функция-член) |
|
operator=
[удалён] | оператор копирующего присваивания удалён. synchronized_pool_resource нельзя присваивать с копированием (открытая функция-член) |
Открытые функции-члены |
|
| освобождает всю выделенную память (открытая функция-член) |
|
| возвращает указатель на вышестоящий ресурс памяти (открытая функция-член) |
|
| возвращает параметры, управляющие поведением этого ресурса при работе с пулами (открытая функция-член) |
|
Защищённые функции-члены |
|
|
[virtual] | выделяет память (защищённая виртуальная функция-член) |
|
[virtual] | возвращает память в пул (защищённая виртуальная функция-член) |
|
[virtual] | сравнивает на равенство с другим memory_resource (защищённая виртуальная функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/synchronized_pool_resource