std::list Thread-safe?
-
Hi,
ist die list der STL eigentlich Thread-safe? D.h. kann ich per push_back() neue Elemente hinzufügen während ein anderer Thread durch die Liste hindurchiteriert oder muss das per Mutex ausgeschlossen werden?
Bompf!
-
Die ganze STL ist nicht thread safe. Sie weiß nicht einmal was das ist. Allerdings sind verschiedene Zugriffe wie für alle anderen Datentypen sicher, so ist gleichzeitiges Lesen z.B. kein Problem. Sobald ein Thread schreibend auf einen Container zugreift sollte das jedoch synchronisiert werden.
-
Das wird in C++0x auch so sein. Und das ist gut so.
-
> Das wird in C++0x auch so sein.
Wer wollte das wissen?
> Und das ist gut so
Wow, diese unglaublich brilliante, ausführliche, sachliche und vor allem einleuchtende Argumentationskette hat mich zu 100% überzeugt!
-
...und noch was... schrieb:
Das wird in C++0x auch so sein. Und das ist gut so.
In C++0x weiß die STL zumindest was ein Thread ist und bringt entsprechende Werkzeuge mit.
-
Deppendetektor schrieb:
Wer wollte das wissen?
Ich halte das zumindest für eine nennenswerte Zusatzinformation, dass, obwohl die kommende Standardbibliothek Threads unterstützt, man trotzdem selbst bei konkurrentem Zugriff auf die Standardcontainer für Locks etc verantwortlich ist.
Deppendetektor schrieb:
Wow, diese unglaublich brilliante, ausführliche, sachliche und vor allem einleuchtende Argumentationskette hat mich zu 100% überzeugt!
Bist Du etwa der Ansicht, dass in C++0x die Container jede Operation "locken" sollten? Wie sieht so etwas bei Iteratoren aus? Wer will denn so eine Bremse im Normalfall? Was ist, wenn man mehrere Operationen hintereinander "atomar" durchführen will (zB std::reverse)? "Don't pay for things you don't use" lautet der Grundsatz.
-
Kannst du den Unterschied zwischen
> Und das ist gut so
und
> Bist Du etwa der Ansicht, dass in C++0x die Container jede Operation "locken" sollten? Wie
> sieht so etwas bei Iteratoren aus? Wer will denn so eine Bremse im Normalfall? Was ist,
> wenn man mehrere Operationen hintereinander "atomar" durchführen will (zB
> std::reverse)? "Don't pay for things you don't use" lautet der Grundsatz.[/quote]erkennen?
(Falls nein: eins von beiden ist hingerotzter Wortmüll, der eigentlich nur Bandbreite verschw