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

Class template private_node_allocator

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Indexes and 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 template private_node_allocator

boost::interprocess::private_node_allocator

Synopsis

// In header: <boost/interprocess/allocators/private_node_allocator.hpp>
template<typename T, typename SegmentManager, std::size_t NodesPerBlock> 
class private_node_allocator {
public:
  // types
  typedef implementation_defined::segment_manager segment_manager;
  typedef segment_manager::void_pointer           void_pointer;   
  typedef implementation_defined::pointer         pointer;        
  typedef implementation_defined::const_pointer   const_pointer;  
  typedef T                                       value_type;     
  typedef unspecified                             reference;      
  typedef unspecified                             const_reference;
  typedef segment_manager::size_type              size_type;      
  typedef segment_manage::difference_type         difference_type;
  // member classes/structs/unions
  template<typename T2> 
  struct rebind {
    // types
    typedef private_node_allocator< T2, SegmentManager, NodesPerBlock > other;
  };
  // construct/copy/destruct
  private_node_allocator(segment_manager *);
  private_node_allocator(const private_node_allocator &);
  template<typename T2> 
    private_node_allocator(const private_node_allocator< T2, SegmentManager, NodesPerBlock > &);
  template<typename T2, typename SegmentManager2, std::size_t N2> 
    private_node_allocator & 
    operator=(const private_node_allocator< T2, SegmentManager2, N2 > &);
  private_node_allocator & operator=(const private_node_allocator &);
  ~private_node_allocator();
  // public member functions
  node_pool_t * get_node_pool() const;
  segment_manager * get_segment_manager() const;
  size_type max_size() const;
  pointer allocate(size_type, cvoid_pointer = 0);
  void deallocate(const pointer &, size_type);
  void deallocate_free_blocks();
  pointer address(reference) const;
  const_pointer address(const_reference) const;
  void construct(const pointer &, const_reference);
  void destroy(const pointer &);
  size_type size(const pointer &) const;
  pointer allocation_command(boost::interprocess::allocation_type, size_type, 
                             size_type &, pointer &);
  void allocate_many(size_type, size_type, multiallocation_chain &);
  void allocate_many(const size_type *, size_type, multiallocation_chain &);
  void deallocate_many(multiallocation_chain &);
  pointer allocate_one();
  void allocate_individual(size_type, multiallocation_chain &);
  void deallocate_one(const pointer &);
  void deallocate_individual(multiallocation_chain &);
  // friend functions
  friend void swap(self_t &, self_t &);
};

Description

Аллокатор узла STL, который использует менеджер сегментов в качестве источника памяти. Внутренний тип указателя будет того же типа (сырой, умный), что и тип «типовое имя SegmentManager::void_pointer». Это позволяет разместить распределитель в общей памяти, карт памяти-файлы и т.д. Этот распределитель имеет собственный узел пула. Узлы PerBlock - это количество узлов, выделенных одновременно, когда у распределителя заканчивается количество узлов.

private_node_allocator public construct/copy/destruct

  1. private_node_allocator(сегмент_менеджер)*сегмент_mngr);

    Конструктор от менеджера сегмента. Если его нет, то строится узел. Увеличивает количество ссылок на соответствующий пул узлов. Может заброситьбустер::интерпроцесс::bad_alloc

  2. private_node_allocatorconstprivate_node_allocator&other;

    Копировать конструктор из другогоprivate_node_allocator. Увеличивает количество ссылок на соответствующий пул узлов. Никогда не бросайте

  3. шаблон<имя типаT2>private_node_allocatorconstprivate_node_allocator<T2,SegmentManager,NodesPerBlock>&другие

    Копии конструктора из родственныхprivate_node_allocator. Если его нет, то строится узел. Увеличивает количество ссылок на соответствующий пул узлов. Может заброситьбустер::interprocess::bad_alloc

  4. шаблон<типовое имятиповое имяstd::размер_tN2>частный_node_allocator&оператор=констчастный_node_allocator<T2,N2>]>]

    Не присваивается из родственных[117

  5. private_node_allocator&оператор=constprivate_node_allocator&]

    Не присваивается из другихprivate_node_allocator

  6. ~private_node_allocator

    Деструктор удаляет из памяти node_pool_t, если его количество ссылок достигает нуля. Никогда не бросайте

private_node_allocator public member functions

  1. node_pool_t*get_node_poolconst;

    Возвращает указатель в пул узлов. Никогда не бросайте

  2. segment_manager*get_segment_managerconst;

    Возвращает менеджер сегмента. Никогда не бросайте

  3. size_typemax_sizeconst;

    Возвращает количество элементов, которые можно выделить. Никогда не бросайте

  4. указательвыделяютразмер_типколичество,cvoid_pointerподсказка=0;

    Выделите память для массива счетных элементов. Броскиboost::interprocess::bad_alloc, если памяти недостаточно

  5. voiddeallocateconstуказатель&ptr,size_type];

    Выделить выделенную память. Никогда не бросай

  6. voiddeallocate_free_blocks;

    Выделяет все свободные блоки бассейна

  7. указательадресссылказначение]конст;

    Возвращает адрес изменяемого объекта. Никогда не бросайте

  8. const_pointeraddressconst_referenceзначение]const;

    Возвращает адрес неизменяемого объекта. Никогда не бросайте

  9. voidbuildconstpointer&ptr,const_reference];

    Копии создают объект. Бросает, если копировальный конструктор Т бросает

  10. voiddestroyconstpointer&ptr;

    Уничтожает объект. Бросает, если разрушитель объекта бросает

  11. size_typesizeconstpointer&p]const;

    Возвращает максимальное количество объектов, которые может удерживать ранее выделенная память, указанная p. Этот размер работает только для памяти, выделенной с выделением, выделением_командой и выделением_многими.

  12. указательраспределение_командповышение::межпроцесс::распределение_типкоманда,размер_типпредел_размер,размер_тип&предпочтение_in_recvd_out_size,указатель&повторное использование;
  13. voidallocate_manysize_typeelem_size,size_typenum_elements,multiallocation_chain&chain;

    Выделяет множество элементов размера elem_size в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Элементы должны быть размещены с помощью соглашения (...)

  14. voidвыделяют_многиеconstsize_type*elem_sizes,size_typen_elements,multiallocation_chain&цепь;

    Выделяет элементы n_элементов, каждый из которых размером elem_sizes[i] в смежный блок памяти. Элементы должны быть размещены

    .
  15. voiddeallocate_manymultiallocation_chain&chain;

    Выделяет множество элементов размера elem_size в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Элементы должны быть размещены с помощью соглашения (...)

  16. указательвыделяют_один;

    Выделяют только один объект. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one(). Броскиboost::interprocess::bad_alloc, если памяти недостаточно

  17. voidallocate_individualsize_typenum_elements,multiallocation_chain&chain;

    Выделяет множество элементов размера == 1 в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one().

  18. voiddeallocate_oneconstуказатель&p;

    Выделяет память, ранее выделенную с выделением_one(). Вы никогда не должны использовать deallocate_one для обработки памяти, выделенной с другими функциями, отличными от allocate_one(). Никогда не бросайте

  19. voiddeallocate_individualmultiallocation_chain&chain;

    Выделяет множество элементов размера == 1 в смежный блок памяти. Минимальное число, которое должно быть выделено, - это min_элементы, предпочтительное и максимальное число - предпочтительные_элементы. Количество фактически выделенных элементов будет присвоено для receive_size. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one().

private_node_allocator friend functions

  1. другvoidswapself_t&alloc1,self_t&alloc2];

    Swaps allocators. Не бросает. Если каждый распределитель помещается в отдельный сегмент памяти, результат не определен.


PrevUpHomeNext

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




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



:: Главная :: Indexes and Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:27:25/0.0083458423614502/0