std::experimental::pmr:: synchronized_pool_resource
From cppreference.net
<
cpp
|
experimental
|
Definiert im Header
<experimental/memory_resource>
|
||
|
class
synchronized_pool_resource
:
public
memory_resource
;
|
(Library Fundamentals TS) | |
Die Klasse
std::experimental::pmr::synchronized_pool_resource
ist eine allgemeine Speicherressourcen-Klasse mit den folgenden Eigenschaften:
-
Es besitzt den allokierten Speicher und gibt ihn bei der Zerstörung frei, selbst wenn
deallocatefür einige der allokierten Blöcke nicht aufgerufen wurde. - Es 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 bereitstellt, die die angeforderte Größe aufnehmen können.
- Das Erschöpfen des Speichers im Pool führt dazu, dass die nächste Allokationsanfrage für diesen Pool einen zusätzlichen Chunk-Speicher vom Upstream-Allokator allokiert, um den Pool wieder aufzufüllen. Die erhaltene Chunk-Größe nimmt geometrisch zu.
- Allokationsanfragen, die die größte Blockgröße überschreiten, werden direkt vom Upstream-Allokator bedient.
- Die größte Blockgröße und die maximale Chunk-Größe können durch Übergabe einer std::experimental::pmr::pool_options -Struktur an ihren Konstruktor angepasst werden.
synchronized_pool_resource
kann von mehreren Threads ohne externe Synchronisierung aus zugegriffen werden und kann threadspezifische Pools besitzen, um Synchronisierungskosten zu reduzieren. Wenn auf die Speicherressource nur von einem Thread zugegriffen wird, ist
unsynchronized_pool_resource
effizienter.
Memberfunktionen
konstruiert einen
synchronized_pool_resource
(öffentliche Elementfunktion) |
|
|
[virtual]
|
zerstört einen
synchronized_pool_resource
und gibt allen allokierten Speicher frei
(virtuelle öffentliche Elementfunktion) |
|
operator=
[deleted]
|
Kopierzuweisungsoperator ist gelöscht.
synchronized_pool_resource
ist nicht kopierzuweisbar
(öffentliche Elementfunktion) |
Öffentliche Elementfunktionen |
|
|
gibt allen allokierten Speicher frei
(öffentliche Elementfunktion) |
|
|
gibt einen Zeiger auf die übergeordnete Speicherressource zurück
(öffentliche Elementfunktion) |
|
|
gibt die Optionen zurück, die das Pooling-Verhalten dieser Ressource steuern
(öffentliche Elementfunktion) |
|
Geschützte Elementfunktionen |
|
|
[virtual]
|
allokiert Speicher
(virtuelle geschützte Elementfunktion) |
|
[virtual]
|
gibt Speicher an den Pool zurück
(virtuelle geschützte Elementfunktion) |
|
[virtual]
|
vergleicht auf Gleichheit mit einem anderen
memory_resource
(virtuelle geschützte Elementfunktion) |