vector.size() thread safe?

Thomasio

Erfahrenes Mitglied
Ich habe 2 threads, die beide auf den gleichen vector zugreifen, Einer checkt immer nur vector.size() und gibt den Wert aus, der Andere ändert den vector mit .push_back() und .erase().
Es ist mir völlig egal, ob der Wert, den .size() liefert korrekt ist oder nicht, die Ausgabe wird einmal pro Sekunde aktualisiert, und wenn für 1 Sekunde ein falscher Wert anzeigt wird, ist das kein Problem, die Frage ist nur:
Kann ich .size() abfragen, auch wenn im anderen thread gerade ein Eintrag eingefügt oder gelöscht wird, ohne dass das Programm abstürzt, weil irgendein undefiniertes Verhalten aufkommt?
 
Hallo Thomasio,

vector::size() ist eine const-Methode. Du kannst also davon ausgehen, dass ein Aufruf den Zustand der Instanz nicht modifiziert. Insofern sollte dein Szenario unproblematisch sein. Wirklich sicher kannst du natürlich nur sein, wenn du die Implementierung genauer untersuchst.

Grüße,
Matthias
 
Zurück