Namespaces
Variants

std::pmr:: synchronized_pool_resource

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Défini dans l'en-tête <memory_resource>
class synchronized_pool_resource : public std:: pmr :: memory_resource ;
(depuis C++17)

La classe std::pmr::synchronized_pool_resource est une classe de ressource mémoire à usage général avec les propriétés suivantes :

  • Il possède la mémoire allouée et la libère lors de la destruction, même si deallocate n'a pas été appelé pour certains des blocs alloués.
  • Il consiste en une collection de pools qui répondent aux demandes pour différentes tailles de blocs. Chaque pool gère une collection de chunks qui sont ensuite divisés en blocs de taille uniforme.
  • Les appels à do_allocate sont acheminés vers le pool fournissant les plus petits blocs pouvant accommoder la taille demandée.
  • L'épuisement de la mémoire dans le pool entraîne que la prochaine demande d'allocation pour ce pool alloue un chunk de mémoire supplémentaire depuis l' upstream allocator pour reconstituer le pool. La taille du chunk obtenu augmente géométriquement.
  • Les demandes d'allocation qui dépassent la plus grande taille de bloc sont servies directement depuis l' upstream allocator .
  • La plus grande taille de bloc et la taille maximale de chunk peuvent être ajustées en passant une structure std::pmr::pool_options à son constructeur.

synchronized_pool_resource peut être utilisé depuis plusieurs threads sans synchronisation externe, et peut disposer de pools spécifiques aux threads pour réduire les coûts de synchronisation. Si la ressource mémoire n'est utilisée que par un seul thread, unsynchronized_pool_resource est plus efficace.

Fonctions membres

construit un synchronized_pool_resource
(fonction membre publique)
[virtuel]
détruit un synchronized_pool_resource , libérant toute la mémoire allouée
(fonction membre publique virtuelle)
operator=
[supprimé]
l'opérateur d'affectation par copie est supprimé. synchronized_pool_resource n'est pas copiable par affectation
(fonction membre publique)
Fonctions membres publiques
libère toute la mémoire allouée
(fonction membre publique)
retourne un pointeur vers la ressource mémoire amont
(fonction membre publique)
retourne les options contrôlant le comportement de regroupement de cette ressource
(fonction membre publique)
Fonctions membres protégées
[virtuel]
alloue de la mémoire
(fonction membre protégée virtuelle)
[virtuel]
retourne la mémoire au regroupement
(fonction membre protégée virtuelle)
[virtuel]
compare pour l'égalité avec un autre memory_resource
(fonction membre protégée virtuelle)