Frage zu Threadsynchronität bei atomaren(?) Operationen



  • Wenn zwei Threads gemeinsam auf eine nicht-synchronisierte Variable zugreifen, einer schreibt in sie, der andere liest; Kann es dann sein, dass der schreibende mitten im Vorgang unterbrochen wird und der lesende nur eine verstümmelte Zahl (z.B. statt 10 eine 5) bekommt? Oder ist die Belegung einer Variable ein atomarer Vorgang?



  • Das hängt vom System ab: Auf einem 8 Bit System ist der (lesende oder schreibende) Zugriff auf ein 8 Bit-Wert atomar, der auf einen 16-Bit Wert schon nicht mehr, da kommt es zu "verstümmelten" Werten.
    Nicht atomar sind aber auch rmw-Zugriffe (read-modify-write) wie z.B. das altbekannte i++;


Log in to reply