Namespaces
Variants

std::experimental::pmr:: synchronized_pool_resource

From cppreference.net
Определено в заголовке <experimental/memory_resource>
class synchronized_pool_resource : public memory_resource ;
(техническая спецификация библиотеки fundamentals)

Класс std::experimental::pmr::synchronized_pool_resource является классом ресурса памяти общего назначения со следующими свойствами:

  • Он владеет выделенной памятью и освобождает её при уничтожении, даже если deallocate не был вызван для некоторых из выделенных блоков.
  • Он состоит из набора пулов , обслуживающих запросы на блоки разного размера. Каждый пул управляет коллекцией чанков , которые затем делятся на блоки одинакового размера.
  • Вызовы do_allocate перенаправляются в пул, обслуживающий блоки наименьшего размера, вмещающие запрошенный размер.
  • Исчерпание памяти в пуле приводит к тому, что следующий запрос на выделение для этого пула выделяет дополнительный чанк памяти из вышестоящего аллокатора для пополнения пула. Размер получаемого чанка увеличивается геометрически.
  • Запросы на выделение, превышающие размер наибольшего блока, обслуживаются напрямую из вышестоящего аллокатора .
  • Наибольший размер блока и максимальный размер чанка могут быть настроены путём передачи структуры std::experimental::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
(виртуальная защищенная функция-член)