C++ allocator
-

Ist es möglich mit standard C++ einen threadsicheren Allocator zu schreiben? (Einen, der Speicher auch Blockweise anfordert.)
Alles was mir gerade einfällt oder was Google ausspuckt würde statische Variablen oder Ähnliches erfordern, allerdings habe ich auch noch sehr wenig Erfahrung mit Allokatoren. (Sehr schön eingedeutscht. :p)
-
news und deletes sind threadsafe. Unter g++ und cl zumindestens...
-
An deiner Stelle würde ich eher die Spezifikationen der mitgelieferten Standard-Library anschauen anstatt einen neuen Allokator zu schreiben. Heute sind diese meistens thread-safe; Microsoft liefert seit 2010 AFAIK nicht mal mehr eine single-threaded Version mehr aus und beim GCC gibts vielleicht verschiedene Versionen und/oder Compiler Switches.
Nach dem alten Standard wird es im Übrigen recht schwierig werden, einen thread-safe Allokator zu bauen. Mit speziellen Algorithmen und volatile bekommt man das zwar hin, aber es ist weder performant noch elegant.
-
anstatt einen neuen Allokator zu schreiben.
Den Allokator muss ich aber leider selbst schreiben. (Der reserviert nicht mal Speicher im herkömmlichen Sinne.)
Nach dem alten Standard wird es im Übrigen recht schwierig werden, einen thread-safe Allokator zu bauen. Mit speziellen Algorithmen und volatile bekommt man das zwar hin, aber es ist weder performant noch elegant.
Das ist schon mal eine Information, dann muss ich vielleicht darauf verzichten. (Konstruktor besorgt sich seinen Speicher dann halt selbst.)
Allerdings lese ich daraus, dass der neue Standard dazu etwas bietet? Was wäre das?
-
Der neue C++-Standard bietet Primitive für die Synchronisation, die es bisher nur in boost gibt. Dazu gehören insbesondere grundlegende Elemente wie mutex und scoped locking mit RAII. Damit stehen dir theoretisch alle Möglichkeiten zur Verfügung, thread-sicher zu programmieren.
-
/rant/ schrieb:
Der neue C++-Standard bietet Primitive für die Synchronisation, die es bisher nur in boost gibt. Dazu gehören insbesondere grundlegende Elemente wie mutex und scoped locking mit RAII. Damit stehen dir theoretisch alle Möglichkeiten zur Verfügung, thread-sicher zu programmieren.
Ah, das ist natürlich klasse. Der neue Standard wird mir immer sympathischer.

Gibt es irgendwo eine Übersicht in der beschrieben wird, was Visual Studio 2010 bzw. GCC davon schon können?
-
Microsoft hat sich bei Visual C++ 2010 vor allem um die Core Language Features gekümmert, und den TR1 nach ISO Vorgaben in std eingegliedert. Die neuen Libraries sind noch sehr unvollständig. Hier ist eine unvollständige, alte Übersicht. Visual C++ 11 steht bereits vor der Tür, und ich erwarte, dass dort mehr Integriert wird, aber ich kann dir noch nichts genaues dazu sagen, weil ich noch keine Zeit hatte, die Preview gross zu testen.
Der GCC ist in mancher Hinsicht bereits weiter mit der C++0x-Integration, aber auch dort wird es wohl noch einige Zeit dauern. Für eine übersicht gibt es dort folgende Seite: http://gcc.gnu.org/projects/cxx0x.html
-
/rant/ schrieb:
Visual C++ 11 steht bereits vor der Tür, und ich erwarte, dass dort mehr Integriert wird, aber ich kann dir noch nichts genaues dazu sagen, weil ich noch keine Zeit hatte, die Preview gross zu testen.
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
-
Here Rant schrieb:
/rant/ schrieb:
Visual C++ 11 steht bereits vor der Tür, und ich erwarte, dass dort mehr Integriert wird, aber ich kann dir noch nichts genaues dazu sagen, weil ich noch keine Zeit hatte, die Preview gross zu testen.
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
Wow! Danke für den Link, das ist ja die reinste Enttäuschung mit dem neuen Compiler. Nachdem Herb Sutter im August grosse Reden geschwungen hatte, waren meine Erwartungen viel grösser.
Und wieder einmal bekommt man vom Microsoft irgend einen proprietären Brei aufgesetzt. Ich dachte seit VC 7.1 wären wir davon weggekommen.
-
/rant/ schrieb:
Here Rant schrieb:
/rant/ schrieb:
Visual C++ 11 steht bereits vor der Tür, und ich erwarte, dass dort mehr Integriert wird, aber ich kann dir noch nichts genaues dazu sagen, weil ich noch keine Zeit hatte, die Preview gross zu testen.
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
Wow! Danke für den Link, das ist ja die reinste Enttäuschung mit dem neuen Compiler. Nachdem Herb Sutter im August grosse Reden geschwungen hatte, waren meine Erwartungen viel grösser.
Und wieder einmal bekommt man vom Microsoft irgend einen proprietären Brei aufgesetzt. Ich dachte seit VC 7.1 wären wir davon weggekommen.
Naja, MinGW gibts ja noch.
