std::pmr::synchronized_pool_resource
Von cppreference.com
| Definiert in Header <memory_resource> |
||
| class synchronized_pool_resource : public std::pmr::memory_resource; |
(seit C++17) | |
Die Klasse std::pmr::synchronized_pool_resource ist eine allgemeine Speicherressourcenklasse mit den folgenden Eigenschaften
- Sie besitzt den zugewiesenen Speicher und gibt ihn bei der Zerstörung frei, auch wenn
deallocatenicht für alle zugewiesenen Blöcke aufgerufen wurde. - Sie besteht aus einer Sammlung von Pools, die Anfragen für verschiedene Blockgrößen bedienen. Jeder Pool verwaltet eine Sammlung von Chunks, die dann in Blöcke einheitlicher Größe unterteilt werden.
- Aufrufe von do_allocate werden an den Pool weitergeleitet, der die kleinsten Blöcke bedient, die die angeforderte Größe aufnehmen können.
- Wenn der Speicher im Pool erschöpft ist, weist die nächste Speicheranforderung für diesen Pool einen zusätzlichen Speicher-Chunk vom Upstream-Allocator zu, um den Pool wieder aufzufüllen. Die Größe des erhaltenen Chunks erhöht sich geometrisch.
- Speicheranforderungen, die die größte Blockgröße überschreiten, werden direkt vom Upstream-Allocator bedient.
- Die größte Blockgröße und die maximale Chunk-Größe können durch Übergabe einer std::pmr::pool_options-Struktur an ihren Konstruktor angepasst werden.
synchronized_pool_resource kann ohne externe Synchronisation von mehreren Threads aus zugegriffen werden und kann Thread-spezifische Pools haben, um Synchronisationskosten zu reduzieren. Wenn die Speicherressource nur von einem Thread aus zugegriffen wird, ist unsynchronized_pool_resource effizienter.
[edit] Member functions
konstruiert eine synchronized_pool_resource(public member function) | |
| [virtuell] |
zerstört eine synchronized_pool_resource und gibt den gesamten zugewiesenen Speicher frei(virtual public member function) |
| operator= [gelöscht] |
Kopierzuweisungsoperator ist gelöscht. synchronized_pool_resource ist nicht kopierbar(public member function) |
Öffentliche Memberfunktionen | |
| gibt allen zugewiesenen Speicher frei (public member function) | |
| gibt einen Zeiger auf die Upstream-Speicherressource zurück (public member function) | |
| gibt die Optionen zurück, die das Pooling-Verhalten dieser Ressource steuern (public member function) | |
Geschützte Memberfunktionen | |
| [virtuell] |
alloziiert Speicher (virtual protected member function) |
| [virtuell] |
gibt Speicher an den Pool zurück (virtual protected member function) |
| [virtuell] |
vergleicht auf Gleichheit mit einer anderen memory_resource(virtual protected member function) |