std::pmr::synchronized_pool_resource
Материал из cppreference.com
Определено в заголовочном файле <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 (public функция-элемент) | |
[virtual] |
уничтожает synchronized_pool_resource , освобождая всю выделенную память (virtual public функция-элемент) |
operator= [удалено] |
оператор присваивания копированием удалён. synchronized_pool_resource нельзя присвоить копированием (public функция-элемент) |
Открытые функции-элементы | |
освобождает всю выделенную память (public функция-элемент) | |
возвращает указатель на вышестоящий ресурс памяти (public функция-элемент) | |
возвращает параметры, управляющие поведением пула этого ресурса (public функция-элемент) | |
Защищённые функции-элементы | |
[virtual] |
выделяет память (virtual protected функция-элемент) |
[virtual] |
возвращает память в пул (virtual protected функция-элемент) |
[virtual] |
сравнивает на равенство с другим memory_resource (virtual protected функция-элемент) |