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 spiele mit schlossloser C ++-Programmierung herum und habe eine Methode zur sicheren (?) Übertragung des Eigentums an einer nicht-thread-sicheren Datenstruktur ( std::unordered_map In meinem...
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,...
Bevor ich zu meiner Hauptfrage komme, gehe ich davon aus, dass std::mutex::unlock() dies nicht mehr berührt, sobald der Mutex in einen Zustand versetzt wird, in dem ein anderer Thread ihn...
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...