Spec-Zone.ru › C++

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 нельзя присваивать с копированием
(открытая функция-член)
Открытые функции-члены
release
освобождает всю выделенную память
(открытая функция-член)
upstream_resource
возвращает указатель на вышестоящий ресурс памяти
(открытая функция-член)
options
возвращает параметры, управляющие поведением этого ресурса при работе с пулами
(открытая функция-член)
Защищённые функции-члены
do_allocate
[virtual]
выделяет память
(защищённая виртуальная функция-член)
do_deallocate
[virtual]
возвращает память в пул
(защищённая виртуальная функция-член)
do_is_equal
[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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API