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

Class template singleton_pool

Boost , Boost.Pool , Header <boost/pool/poolfwd.hpp>

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 template singleton_pool

boost::singleton_pool

Synopsis

// In header: <boost/pool/poolfwd.hpp>
template<typename Tag, unsigned RequestedSize, 
         typename UserAllocator = default_user_allocator_new_delete, 
         typename Mutex = details::pool::default_mutex, 
         unsigned NextSize = 32, unsigned MaxSize = 0> 
class singleton_pool {
public:
  // construct/copy/destruct
  singleton_pool();
  // public static functions
  static void * malloc();
  static void * ordered_malloc();
  static void * ordered_malloc(const size_type);
  static bool is_from(void *const);
  static void free(void *const);
  static void ordered_free(void *const);
  static void free(void *const, const size_type);
  static void ordered_free(void *const, const size_type);
  static bool release_memory();
  static bool purge_memory();
  // private static functions
  static pool_type & get_pool();
};

Description

Singleton_poolКласс позволяет другим интерфейсам пула для типов того же размера совместно использовать тот же пул. Параметры шаблонов следующие:

ТегТип, определенный пользователем, чтобы однозначно идентифицировать этот пул: позволяет существовать различным неограниченным наборам одиночных пулов.

Запрошенный размерРазмер каждой части, возвращаемой функцией члена<malloc()>.

UserAllocatorUser Allocator, default =default_user_allocator_new_delete.

МутексЭтот класс является типом mutex для защиты одновременного доступа к базовому бассейну. Может быть любой рост. мутексный тип или<boost::details::pool::null_mutex>. Он выставляется таким образом, что пользователи могут объявлять некоторые однотонные пулы обычно (т.е. с синхронизацией), но некоторые однотонные пулы без синхронизации (путем указания<boost::details::pool::null_mutex>) по соображениям эффективности. Член typedef<mutex>раскрывает значение этого шаблонного параметра. По умолчанию для этого параметра есть boost::details::pool::default_mutex который является синонимом либо<boost::details::pool::null_mutex>(когда поддержка потоков выключена в компиляторе (так что BOOST_HAS_THREADS не установлен), либо поддержка потоков явно отключена с BOOST_). Недопустимые_твари (Широкое отключение потоков) или BOOST_POOL_NO_MT (только эта библиотека) или для<boost::mutex>(при включенной поддержке потоков в компиляторе).

NextSizeЗначение этого параметра передается в базовый пул при его создании и указывает количество кусков для выделения в первом запросе на выделение (по умолчанию 32). Typedef<static const value next_size>раскрывает значение этого шаблонного параметра.

MaxSizeЗначение этого параметра передается в базовый пул при его создании и указывает максимальное количество кусков для выделения в любом отдельном запросе на выделение (по умолчанию 0).

Примечания:

Базовый пулp, на который ссылаются статические функции вsingleton_pool, фактически объявляется таким образом, что:

1 1 Безопасен, если перед началом main() и после окончания main() запущена только одна нить; все статические функцииsingleton_poolсинхронизируют их доступ к p.

2 2 Гарантируется, что он будет построен до его использования и No 8211; таким образом, простой статический объект в приведенном выше синопсисе будет фактически неправильной реализацией. Реальная реализация, чтобы гарантировать это значительно сложнее.

3 Также обратите внимание, что для каждого набора параметров шаблона существует различный базовый пул p, включая параметры, специфичные для реализации.

4.4 Базовый бассейн построен «как будто»:

poolp(RequestedSize, NextSize, MaxSize);

[Note]Note

Бассейн, построенный одиночкой, никогда не освобождается. Это означает, что память, выделеннаяsingleton_pool, может по-прежнему использоваться после завершения main(), но может означать, что некоторые программы проверки памяти будут жаловаться на утечки изsingleton_pool.

singleton_pool public construct/copy/destruct

  1. <
    singleton_pool();
    >

singleton_pool public static functions

  1. Эквивалент в Бассейне Синглтона::p.malloc(); синхронизировано.

    [ORIG_END] -->
  2. Эквивалентный SingletonPool::p.ordered_malloc(); синхронизированный.

    [ORIG_END] -->
  3. Эквивалентный в SingletonPool::p.ordered_malloc(n); синхронизированный.

    [ORIG_END] -->
  4. staticboolis_from(void*constptr);

    Эквивалент SingletonPool::p.is_from(chunk); синхронизированный.

    Возвращение:

    истинно, если кусок из SingletonPool::is_from

  5. staticvoidfree(void*constptr);

    Эквивалент SingletonPool::p.free(chunk); синхронизированный.

  6. staticvoidordered_free(void*constptr);

    Эквивалент SingletonPool::p.ordered_free(chunk); синхронизированный.

  7. staticvoidfree(void*constptr,constsize_typen);

    Эквивалент SingletonPool::p.free(chunk, n); синхронизированный.

  8. Эквульвалент SingletonPool::p.ordered_free(chunk, n); синхронизация.

    [ORIG_END] -->
  9. Эквивалент SingletonPool::p.release_memory(); синхронизированный.

    [ORIG_END] -->
  10. staticboolpurge_memory();

    Эквивалент SingletonPool::p.purge_memory(); синхронизированный.

singleton_pool private static functions

  1. <
    staticpool_type&get_pool();
    >

PrevUpHomeNext

Статья Class template singleton_pool раздела Boost.Pool Header <boost/pool/poolfwd.hpp> может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Header <boost/pool/poolfwd.hpp> ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:31:01/0.0094001293182373/1