Sind C-Lese- und Schreibvorgänge eines int atomar?
Die Frage bezieht sich auf die Atomizität ganzzahliger Lese- und Schreibvorgänge in C. Die Atomarität stellt sicher, dass der Vorgang als eine einzige unteilbare Einheit abgeschlossen wird, sodass während des Prozesses keine Unterbrechungen auftreten.
Die Antwort auf diese Frage hängt von der Architektur des Systems ab. Auf Prozessoren wie IA32 sind ausgerichtete Schreibvorgänge in Ints typischerweise atomar. Abhängig vom verwendeten Caching-System sind nicht ausgerichtete Schreibvorgänge jedoch möglicherweise nicht atomar. Wenn sich der Speicher innerhalb einer einzelnen Cache-Zeile befindet, bleibt die Atomizität erhalten; Andernfalls ist dies nicht der Fall.
Außerdem kann die Breite des Busses zwischen CPU und RAM die Atomizität beeinflussen. Bei älteren Prozessoren wie dem 8086 mit einem 16-Bit-Bus waren ausgerichtete 16-Bit-Schreibvorgänge atomar, während der gleiche Vorgang beim 8088 mit einem 8-Bit-Bus nicht gewährleistet war.
Für C/ Bei C-Programmen ist es wichtig, gemeinsame Werte als flüchtig zu deklarieren. Dadurch wird verhindert, dass der Optimierer davon ausgeht, dass die Variable innerhalb eines Threads nicht geändert wird, wodurch sichergestellt wird, dass immer der tatsächliche Wert gelesen wird.
Das obige ist der detaillierte Inhalt vonSind ganzzahlige Lese- und Schreibvorgänge in C immer atomar?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!