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=
[deleted] |
оператор копирования присваивания удалён. 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/w/cpp/memory/synchronized_pool_resource