Ich versuche zu lernen und besser zu verstehen Multithreading, aber ich habe auf das Verhalten von atomaren Funktionen wie fetch-and-add hängen. Im speziellen Fall von fetch-and-add ist es ein Verständnis, dass ein Wert (sagen wir mal x, der momentan 5 ist) zu einem Inkrementwert addiert wird (sagen wir 3), die resultierende Summe (8) wird in x geschrieben Ort im Speicher, aber der alte Wert (5) wird zurückgegeben.Warum geben atomare Operationen wie fetch-and-add den alten Wert der Variablen zurück, die geändert wird?
Es gibt mehrere andere solche Funktionen an verschiedenen Stellen (wie OpenGL Atomfunktionen, Java AtomicIntegers, und viele weitere Bereiche), die sich so verhalten. Aber was ich nicht verstehe, ist, warum ein Code-Platz in den Speicher schreiben möchte und dennoch den Wert zurückgibt, den er in erster Linie ändern wollte. Kann mir jemand helfen, das zu beleuchten?
Dies war ein unglaublich hilfreicher Artikel zum Lesen. Danke, Sergey und Dimitar so sehr für die Hilfe und Beispiele! – hashahid