Namespaces
Variants

std::experimental::pmr:: synchronized_pool_resource

From cppreference.net
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 deallocate fü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)