std::experimental::pmr:: synchronized_pool_resource
From cppreference.net
<
cpp
|
experimental
|
Определено в заголовке
<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
(виртуальная защищенная функция-член) |