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

Class template segment_manager

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 segment_manager

boost::interprocess::segment_manager

Synopsis

// In header: <boost/interprocess/segment_manager.hpp>
template<typename CharType, typename MemoryAlgorithm, 
         template< class IndexConfig > class IndexType> 
class segment_manager :
  public boost::interprocess::segment_manager_base< MemoryAlgorithm >
{
public:
  // types
  typedef MemoryAlgorithm                                                                 memory_algorithm;         
  typedef segment_manager_base_t::void_pointer                                            void_pointer;             
  typedef segment_manager_base_t::size_type                                               size_type;                
  typedef segment_manager_base_t::difference_type                                         difference_type;          
  typedef CharType                                                                        char_type;                
  typedef segment_manager_base< MemoryAlgorithm >                                         segment_manager_base_type;
  typedef segment_manager_base_t::mutex_family                                            mutex_family;             
  typedef transform_iterator< typename named_index_t::const_iterator, named_transform >   const_named_iterator;     
  typedef transform_iterator< typename unique_index_t::const_iterator, unique_transform > const_unique_iterator;    
  // member classes/structs/unions
  template<typename T> 
  struct allocator {
    // types
    typedef boost::interprocess::allocator< T, segment_manager > type;
  };
  template<typename T> 
  struct deleter {
    // types
    typedef boost::interprocess::deleter< T, segment_manager > type;
  };
  // construct/copy/destruct
  explicit segment_manager(size_type);
  // public member functions
  template<typename T> std::pair< T *, size_type > find(char_ptr_holder_t);
  template<typename T> 
    std::pair< T *, size_type > find_no_lock(char_ptr_holder_t);
  template<typename T> construct_proxy< T >::type construct(char_ptr_holder_t);
  template<typename T> 
    construct_proxy< T >::type find_or_construct(char_ptr_holder_t);
  template<typename T> 
    construct_proxy< T >::type 
    construct(char_ptr_holder_t, const std::nothrow_t &);
  template<typename T> 
    construct_proxy< T >::type 
    find_or_construct(char_ptr_holder_t, const std::nothrow_t &);
  template<typename T> 
    construct_iter_proxy< T >::type construct_it(char_ptr_holder_t);
  template<typename T> 
    construct_iter_proxy< T >::type find_or_construct_it(char_ptr_holder_t);
  template<typename T> 
    construct_iter_proxy< T >::type 
    construct_it(char_ptr_holder_t, const std::nothrow_t &);
  template<typename T> 
    construct_iter_proxy< T >::type 
    find_or_construct_it(char_ptr_holder_t, const std::nothrow_t &);
  template<typename Func> void atomic_func(Func &);
  template<typename Func> bool try_atomic_func(Func &);
  template<typename T> bool destroy(char_ptr_holder_t);
  template<typename T> void destroy_ptr(const T *);
  void reserve_named_objects(size_type);
  void reserve_unique_objects(size_type);
  void shrink_to_fit_indexes();
  size_type get_num_named_objects();
  size_type get_num_unique_objects();
  const_named_iterator named_begin() const;
  const_named_iterator named_end() const;
  const_unique_iterator unique_begin() const;
  const_unique_iterator unique_end() const;
  template<typename T> allocator< T >::type get_allocator();
  template<typename T> deleter< T >::type get_deleter();
  // public static functions
  template<typename T> static const CharType * get_instance_name(const T *);
  template<typename T> static size_type get_instance_length(const T *);
  template<typename T> static instance_type get_instance_type(const T *);
  static size_type get_min_size();
  // public data members
  static const size_type PayloadPerAllocation;
};

Description

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

Первый индекс содержит отображения для обычных именованных объектов с использованием типа char, указанного в параметре шаблона.

Второй индекс содержит ассоциацию для уникальных экземпляров. Ключом будет const char *, возвращенный из функции type_info.name() для уникального типа, который будет построен.

segment_managerнаследует публично от segment_manager_baseи наследует от него многие публичные функции, связанные с анонимным объектом и необработанным выделением памяти. См.segment_manager_baseУзнать об этих функциях.

segment_manager public construct/copy/destruct

  1. <
    explicitsegment_manager(size_typesegment_size);
    >

    Конструктором сегментного менеджера является размер сегмента памяти, в котором строится сегментный менеджер. Можно ли бить

segment_manager public member functions

  1. <
    template<typenameT>std::pair<T*,size_type>find(char_ptr_holder_tname);
    >

    Пытается найти ранее названное/уникальное распределение. Возвращает адрес и счет объекта. При отказе первый член возвращаемой пары равен 0.

  2. <
    template<typenameT>
     std::pair<T*,size_type>find_no_lock(char_ptr_holder_tname);
    >

    Пытается найти ранее названное/уникальное распределение. Возвращает адрес и счет объекта. При отказе первый член возвращаемой пары равен 0. Этот поиск не защищен мутексом! Используйте его только внутри вызовов Atomic_func(), где внутренний мутекс гарантированно заблокирован.

  3. <
    template<typenameT>
     construct_proxy<T>::typeconstruct(char_ptr_holder_tname);
    >

    Возвращение метательного «конструктивного» прокси-объекта

  4. <
    template<typenameT>
     construct_proxy<T>::typefind_or_construct(char_ptr_holder_tname);
    >

    Возвращение бросающего «поиск или конструирование» прокси-объекта

  5. <
    template<typenameT>
     construct_proxy<T>::type
     construct(char_ptr_holder_tname,conststd::nothrow_t&);
    >

    Возвращает не бросающий «конструкцию» прокси-объект

  6. <
    template<typenameT>
     construct_proxy<T>::type
     find_or_construct(char_ptr_holder_tname,conststd::nothrow_t&);
    >

    Возвращает не бросающий «поиск или конструкцию» прокси-объект

  7. <
    template<typenameT>
     construct_iter_proxy<T>::typeconstruct_it(char_ptr_holder_tname);
    >Возвращение бросающего «конструкцию из итераторов» прокси-объекта.
  8. <
    template<typenameT>
     construct_iter_proxy<T>::typefind_or_construct_it(char_ptr_holder_tname);
    >

    Возвращение бросающего «поиск или конструкцию из итераторов» прокси-объекта

  9. <
    template<typenameT>
     construct_iter_proxy<T>::type
     construct_it(char_ptr_holder_tname,conststd::nothrow_t&);
    >

    Возвращает не бросающий «конструкцию из итераторов» прокси-объект

  10. <
    template<typenameT>
     construct_iter_proxy<T>::type
     find_or_construct_it(char_ptr_holder_tname,conststd::nothrow_t&);
    >

    Возвращает не бросающий «поиск или конструкцию из итераторов» прокси-объект

  11. <
    template<typenameFunc>voidatomic_func(Func&f);
    >

    Называет функцию объекта, блокирующую рекурсивную<interprocess_mutex>, и гарантирует, что ни один новый вызов_alloc или разрушение не будут выполняться каким-либо процессом при выполнении вызова функции объекта

    .
  12. <
    template<typenameFunc>booltry_atomic_func(Func&f);
    >

    Пытается вызвать функтор, гарантирующий, что никакая новая конструкция, поиск или разрушение не будут выполнены каким-либо процессом при выполнении вызова функции объекта. Если атомная функция не может быть немедленно выполнена, потому что внутренний мутекс уже заблокирован, возвращается ложный. Если функтор бросает, эта функция бросает.

  13. <
    template<typenameT>booldestroy(char_ptr_holder_tname);
    >

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

  14. <
    template<typenameT>voiddestroy_ptr(constT*p);
    >

    Уничтожает анонимный, уникальный или названный объект, используя его адрес

  15. <
    voidreserve_named_objects(size_typenum);
    >

    Предоставляет необходимые индексные ресурсы для оптимизации создания «номерных» названных объектов в сегменте управляемой памяти.<boost::interprocess::bad_alloc>Если не хватает памяти.

  16. <
    voidreserve_unique_objects(size_typenum);
    >

    Предоставляет необходимые индексные ресурсы для оптимизации создания «номерных» уникальных объектов в сегменте управляемой памяти.<boost::interprocess::bad_alloc>Если не хватает памяти.

  17. <
    voidshrink_to_fit_indexes();
    >

    Звонки shrink_to_fit в названных и уникальных индексах объектов, чтобы попытаться освободить неиспользованную память от этих индексов.

  18. <
    size_typeget_num_named_objects();
    >

    Возвращает число именованных объектов, хранящихся в сегменте.

  19. <
    size_typeget_num_unique_objects();
    >

    Возвращает количество уникальных объектов, хранящихся в сегменте.

  20. <
    const_named_iteratornamed_begin()const;
    >

    Возвращает постоянный итератор к началу информации об именованных распределениях, выполняемых в этом менеджере сегмента

  21. <
    const_named_iteratornamed_end()const;
    >

    Возвращает постоянный итератор в конец информации об именованных распределениях, выполняемых в этом менеджере сегмента

  22. <
    const_unique_iteratorunique_begin()const;
    >

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

  23. <
    const_unique_iteratorunique_end()const;
    >

    Возвращает постоянный итератор в конец информации об уникальных распределениях, выполняемых в этом менеджере сегмента

  24. <
    template<typenameT>allocator<T>::typeget_allocator();
    >

    Возвращает экземпляр инициализированного распределителя по умолчанию для типа T, который выделяет память из этого менеджера сегментов.

  25. <
    template<typenameT>deleter<T>::typeget_deleter();
    >

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

segment_manager public static functions

  1. <
    template<typenameT>staticconstCharType*get_instance_name(constT*ptr);
    >

    Возвращает имя объекта, созданного с помощью функций конструктора/найти_или_конструкции. Не бросать

  2. <
    template<typenameT>staticsize_typeget_instance_length(constT*ptr);
    >

    Возвращает длину объекта, созданного с помощью функций конструктор/найти_или_конструировать. Не бросает.

  3. <
    template<typenameT>staticinstance_typeget_instance_type(constT*ptr);
    >

    Возвращение — это название объекта, созданного с помощью функций конструктор/найти_или_конструировать. Не бросать

  4. <
    staticsize_typeget_min_size();
    >

    Получает минимальный размер, необходимый менеджеру сегмента


PrevUpHomeNext

Статья Class template segment_manager раздела 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-20 01:58:29/0.0081620216369629/1