Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class synchronized_pool_resource

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Boost.Container Header Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class synchronized_pool_resource

boost::container::pmr::synchronized_pool_resource

Synopsis

// In header: <boost/container/pmr/synchronized_pool_resource.hpp>

class synchronized_pool_resource :
  public boost::container::pmr::memory_resource
{
public:
  // construct/copy/destruct
  synchronized_pool_resource(const pool_options &, memory_resource *) noexcept;
  synchronized_pool_resource() noexcept;
  explicit synchronized_pool_resource(memory_resource *) noexcept;
  explicit synchronized_pool_resource(const pool_options &) noexcept;
  synchronized_pool_resource(const synchronized_pool_resource &) = delete;
  synchronized_pool_resource 
  operator=(const synchronized_pool_resource &) = delete;
  ~synchronized_pool_resource();
  // public member functions
  void release();
  memory_resource * upstream_resource() const;
  pool_options options() const;
  std::size_t pool_count() const;
  std::size_t pool_index(std::size_t) const;
  std::size_t pool_next_blocks_per_chunk(std::size_t) const;
  std::size_t pool_block(std::size_t) const;
  std::size_t pool_cached_blocks(std::size_t) const;
  // protected member functions
  virtual void * do_allocate(std::size_t, std::size_t);
  virtual void do_deallocate(void *, std::size_t, std::size_t);
  virtual bool do_is_equal(const memory_resource &) const noexcept;
};

Description

А.Синхронизированный_pool_resourceявляется универсальным ресурсом памяти, обладающим следующими качествами:

  • Каждый ресурс владеет выделенной памятью и освобождает её от разрушения, даже если для некоторых выделенных блоков не был вызван деллокат.

  • Ресурс пула состоит из набора пулов, обслуживающих запросы на различные размеры блоков. Каждый отдельный бассейн управляет коллекцией кусков, которые в свою очередь делятся на блоки однородного размера, возвращаемые с помощью вызовов do_allocate. Каждый вызов do_allocate (размер, выравнивание) отправляется в пул, обслуживающий наименьшие блоки, вмещающие по меньшей мере байты размера.

  • Когда конкретный бассейн исчерпан, выделение блока из этого бассейна приводит к выделению дополнительного куска памяти из распределителя вверх по течению (поставляемого при строительстве), таким образом пополняя бассейн. С каждым последующим пополнением полученный размер куска увеличивается геометрически. [Примечание: распределяя память по частям, стратегия объединения увеличивает вероятность того, что последовательные распределения будут близки друг к другу в памяти. - конец примечания ]

  • Запросы распределения, превышающие наибольший размер блока любого пула, выполняются непосредственно из распределителя вверх по течению.

  • Структураpool_optionsможет быть передана конструкторам ресурсов пула для настройки наибольшего размера блока и максимального размера фрагмента.

Ксинхронизированному_pool_ресурсуможно получить доступ из нескольких потоков без внешней синхронизации и может иметь специфичные для потоков пулы для снижения затрат на синхронизацию.

synchronized_pool_resource public construct/copy/destruct

  1. Требуется:upstream]upstreamupstreamupstreamupstream]upstreamupstreamupstreamupstream]upstreamupstreamupstream]upstreamupstream].

    Эффекты: Конструкция по восстановлению работоспособности, стр. стр., стр., стр., стр., стр., стр., стр., стр., стр., стр., стр., стр., стр., стр., стр. , , , , , , , , , , , , , , , , , , , , , , , , , . [Примечание: мер мер ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ). ).. - включаю взрывобезопасность, вызванную катастрофой, включающую взрывобезопасность.

    Бросок: Ничего, кроме выделения вверх по течению. Он - L, , , , или , , , , , , , , , , , , , .

    [ORIG_END] -->
  2. Эффекты:unsynchronized_pool_resource(pool_options(), get_default_resource())

    [ORIG_END] -->
  3. Эффекты:unsynchronized_pool_resource(pool_options(), upstream)

    [ORIG_END] -->
  4. Эффекты:unsynchronized_pool_resource(opts, get_default_resource())

    [ORIG_END] -->
  5. <
    synchronized_pool_resource(constsynchronized_pool_resource&)=delete;
    >
  6. <
    synchronized_pool_resource
    operator=(constsynchronized_pool_resource&)=delete;
    >
  7. ~synchronized_pool_resource();

    Эффекты: Звонкиthis->release()

    .

synchronized_pool_resource public member functions

  1. voidrelease();

    Эффекты: Звонки Звонкиupstream_resource()->deallocate()по мере необходимости для освобождения всей выделенной памяти. [Примечание: память высвобождается обратно вupstream_resource(), даже если для некоторых выделенных блоков не было вызвано соглашение. - конец примечания ]

  2. memory_resource*upstream_resource()const;

    Возвращение: Значение аргумента восходящего потока предоставлено конструктору этого объекта.

  3. Возвращение: Варианты: , , , , , . Значимость, гнусно-крансажной рутины , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .

    [ORIG_END] -->
  4. Возвращение:

    Примечание:

    [ORIG_END] -->
  5. std::size_tpool_index(std::size_tbytes)const;

    Возвращение: Индекс пула, который будет использоваться для обслуживания распределенияbytes. Возвратpool_count(), еслиbytesбольшеoptions().largest_required_pool_block(для этого не будет использоваться бассейн).

    Примечание: Нестандартное расширение.

  6. std::size_tpool_next_blocks_per_chunk(std::size_tpool_idx)const;

    Требует:pool_idx < pool_index()

    Возвращение: Число блоков, которые будут выделены в следующем куске из пула, указанногоpool_idx.

    Примечание: Нестандартное расширение.

  7. std::size_tpool_block(std::size_tpool_idx)const;

    Требует:pool_idx < pool_index()

    Возвращение: Количество байтов блока, которым управляет указанныйpool_idxпул.

    Примечание: Нестандартное расширение.

  8. std::size_tpool_cached_blocks(std::size_tpool_idx)const;

    Требует:pool_idx < pool_index()

    Возвращение: Количество блоков, которые указанный пулpool_idxкэшировал и будет обслуживаться без вызова upstream_allocator.

    Примечание: Нестандартное расширение.

synchronized_pool_resource protected member functions

  1. Возвращение: Обозначение отсчета (отсчета)bytes.memory_resource

    Эффектыmemory_resource: Если пул, то пул, блок байта-лак, несъедобный мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий мягкий.bytesupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstream]upstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstream]upstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstream]upstreamupstreamupstreamupstreamupstreamupstream]upstreamupstreamupstreamupstreamupstream]upstreamupstreamupstreamupstreamupstreamupstreamupstream[upstream_resource()->allocate()

    Бросает:upstream_resource()->allocate()

    [ORIG_END] -->
  2. Эффекты: Верхний уровень вероятности p. Несмотря на то, что это не так.upstream_resource()->deallocate()

    Бросает: Ничего.

    [ORIG_END] -->
  3. Возвращение:this == dynamic_cast<const unsynchronized_pool_resource*>(&other).

    [ORIG_END] -->

PrevUpHomeNext

Статья Class synchronized_pool_resource раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Container Header Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Boost.Container Header Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:21:03/0.030929803848267/1