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)
Definiert im 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:

  • 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::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 haben, 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 Mitgliedsfunktion)
[virtual]
Zerstört einen synchronized_pool_resource und gibt allen allokierten Speicher frei
(Virtuelle öffentliche Mitgliedsfunktion)
operator=
[deleted]
Kopierzuweisungsoperator ist gelöscht. synchronized_pool_resource ist nicht kopierzuweisbar
(Öffentliche Mitgliedsfunktion)
Öffentliche Mitgliedsfunktionen
Gibt allen allokierten Speicher frei
(Öffentliche Mitgliedsfunktion)
Gibt einen Zeiger auf die übergeordnete Speicherressource zurück
(Öffentliche Mitgliedsfunktion)
Gibt die Optionen zurück, die das Pooling-Verhalten dieser Ressource steuern
(Öffentliche Mitgliedsfunktion)
Geschützte Mitgliedsfunktionen
[virtual]
Allokiert Speicher
(Virtuelle geschützte Mitgliedsfunktion)
[virtual]
Gibt Speicher an den Pool zurück
(Virtuelle geschützte Mitgliedsfunktion)
[virtual]
Vergleicht auf Gleichheit mit einem anderen memory_resource
(Virtuelle geschützte Mitgliedsfunktion)