std::pmr:: synchronized_pool_resource
From cppreference.net
C++
Memory management library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::pmr::synchronized_pool_resource
| Public member functions | ||||
| Protected member functions | ||||
|
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
deallocaten'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) |