Speicherpoolimplementierung in C

8

Ich suche nach einer guten Speicherpool-Implementierung in C.

sollte Folgendes enthalten:

  1. Antifragmentierung.
  2. Sei super schnell:)
  3. Möglichkeit, mehrere Zuweisungen aus verschiedenen Größen unter einem Bezeichner zu "bündeln" und alle Zuweisungen mit dem angegebenen Bezeichner zu löschen.
  4. Thread sicher
Avi Zrachya 15.08.2011, 00:23
quelle

4 Antworten

7

Ich denke, die ausgezeichnete talloc , die als Teil von Samba entwickelt wurde, könnte das sein, was Sie tun Ich suche nach. Der interessanteste Teil ist, dass jeder von talloc zurückgegebene Zeiger ein gültiger Speicherkontext ist. Ihr Beispiel ist:

%Vor%

Als Antwort auf Ihre besonderen Punkte:

(1) Nicht sicher, welche Anti-Fragmentierung in diesem Fall vorliegt. In C werden Sie ohnehin keine Garbage-Collection kompaktifizieren, daher sind Ihre Möglichkeiten etwas eingeschränkt.

(2) Es bewirbt sich nur um 4% langsamer als plain malloc(3) , was ziemlich schnell ist.

(3) Siehe Beispiel oben.

(4) Es ist Thread-sicher, solange verschiedene Threads unterschiedliche Kontexte verwenden & amp; Das zugrunde liegende malloc ist threadsicher.

    
Bobby Powers 15.08.2011, 12:42
quelle
2

Hast du schon in

nachgesehen?

Beide nutzen einen Speicherpool, halten ihn jedoch für den Benutzer größtenteils transparent.

Im Allgemeinen finden Sie die beste Leistung in Ihrem eigenen benutzerdefinierten Speicherpool (Sie können für Ihr Muster optimieren). Ich habe am Ende ein paar für verschiedene Zugangsmuster geschrieben.

    
Foo Bah 15.08.2011 01:57
quelle
2

Für Speicherpools, die gründlich getestet wurden, möchten Sie vielleicht nur die APR verwenden:

Ссылка

Wohlgemerkt, einzelne Pools sind nicht threadsicher, Sie müssen das selbst handhaben.

    
juhanic 15.08.2011 05:54
quelle
-2

bget ist eine andere Wahl. Es ist gut getestet und produktionsbereit.

Ссылка

    
Song 29.04.2015 19:17
quelle