Angenommen, ich habe ein std :: atomic und verschiedene Threads führen Operationen wie std :: string foo = map ["bar"]; und map ["bar"] = "baz" . Ich speichere keine Referenzen oder Zeiger auf die Werte in der Karte. Ich brauche nur Speichern und Abrufen von Werten, um Thread-Safely zu erfolgen. Funktioniert diese oder muss ich ein Schloss oder so? verwenden?
Angenommen, ich habe ein std :: atomic und verschiedene Threads führen Operationen wie std :: string foo = map ["bar"]; und map ["bar"] = "baz" . Ich speichere keine Referenzen oder Zeiger auf die Werte in der Karte. Ich brauche nur Speichern und Abrufen von Werten, um Thread-Safely zu erfolgen. Funktioniert diese oder muss ich ein Schloss oder so? verwenden?
Ich verstehe, dass std :: atomic ein atomisches Objekt ist. Aber inwieweit Atomic? Nach meinem Verständnis kann eine Operation atomar sein. Was genau ist mit einem Objektatomic gemeint? Zum Beispiel,...
Atomisch die Objektdarstellung (bis c ++ 20) Wert
-Repräsentation (seit c ++, vergleicht das von c ++ 20) vergleicht. gewünscht (führt
read-modify-write-Operation ausgeführt). Andernfalls...
Ich merke, dass es häufig vorgeschlagen wird, Warteschlangen mit mehreren Threads anstelle von Listen und .pop () zu verwenden. Liegt dies daran, dass Listen nicht threadsicher sind oder aus einem...