STL-Allokator für Shared Memory

  Development

Der "STL Allocator" ist eine C++-Bibliothek, die die Standard Template Library für Objekte im Shared Memory unter Linux verwendbar macht.

Motivation

Im Rahmen eines an der Universität Kaiserslautern durchgeführten Drittmittelprojektes wurde ein Demonstrator entwickelt, der umfangreiche Interprozesskommunikation durchzuführen hatte. Dies sollte über Shared Memory durchgeführt werden, ohne auf die Möglichkeiten der Standard Template Library verzichten zu müssen.

Beschreibung

Shared Memory ermöglicht die gemeinsame Verwendung von Variablen, Datenstrukturen und Objekten durch mehrere Prozesse. Mit Hilfe der hier zur Verfügung gestellten Bibliothek ist es möglich, Shared Memory unter Verwendung einer C++-Klasse anzusprechen. Auch Semaphoren und Mutexe werden mit C++-Klassen gekapselt. Unter Nutzung eines einfachen Memory-Allokators können einzelne Variablen und Objekte in einem Shared-Memory-Segment abgelegt werden.

Ein eigener STL-Allokator ermöglicht es mit Hilfe der oben genannten Objektklassen Objekte der Standard Template Library (STL) in mehreren Prozessen gemeinsam zu verwenden. Beispielsweise können "map"-, "set"- und "vector"-Objekte von mehreren Prozessen aus gelesen und verändert werden. Es ist keinerlei änderung innerhalb der STL-Library selbst erforderlich.

Das Projekt wurde 2003 im Linux Magazin unter dem Titel "Gemeinsame Sache - Standard Template Library für Objekte im Shared Memory verwenden" vorgestellt. Der Abstract zum Artikel lautet: "Shared Memory ermöglicht die gemeinsame Verwendung von Variablen, Datenstrukturen und Objekten durch mehrere Prozesse und ist daher ein beliebtes Verfahren zur Interprozesskommunikation. Programmierer fühlen sich aber schnell in die Zeit zurückversetzt, in der sie verkettete Listen noch eigenhändig programmieren mussten. Die in diesem Artikel vorgestellte C++-Bibliothek gibt ihnen die Möglichkeit, die Vorteile der STL auch im Shared Memory zu nutzen."

Implementierung

Die "STL Allocator"-Bibliothek ist in und für C++ implementiert. Details finden sich im Artikel des Linux Magazin und im Quelltext, der unter der GPL frei verfügbar ist.

Referenzen