Hallo zusammen,
wir haben grad eine Diskussion bezüglich des locken's von Operationen. Daher muss man in einem Thread das setzen und lesen eines bool mit lock absicher? Ich dachte immer atomare Operationen muss man nicht locken, jetzt stellt sich natürlich die Frage ob das setzen bzw. lesen eines bools in c# eine atomare Operation ist.
Again what learned...
Hallo,
ein bool sollte mit volatile
versehen werden damit der Wert nicht gecached wird. Mehr ist hier nicht notwendig - es ist atomar, aber eben nicht "cachesicher".
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
ein bool sollte mit volatile versehen werden
Jepp das wurde bereits getan, nur ging die Diskussion wegen dem Lock los.
Danke für die schnelle Info. Ich glaub jede simple lese sowie schreibaktion eines Feldes kleiner oder gleich 32 Bit ist atomar.
Again what learned...
Hallo rollerfreak2,
Ich glaub jede simple lese sowie schreibaktion eines Feldes kleiner oder gleich 32 Bit ist atomar.
korrekt und dann ist für die eine einzelne solche Operation kein lock erforderlich. Anders sieht es aus, wenn mehrere atomare Operationen zusammen untrennbar ausgeführt werden müssen. So muss um ein i = i + 1
ein lock, weil da zwei atomare Aktionen auf i beteiligt sind, nämlich einmal den Wert zu lesen und einmal den Wert zu schreiben. Und zwischen diesen beiden atomaren Teilen kann eben noch jemand anders zwischen hauen.
herbivore
Ich glaub jede simple lese sowie schreibaktion eines Feldes kleiner oder gleich 32 Bit ist atomar.
Da musst Du nichts glauben... nur lesen 😃
Schau in die Doku... da sind die atomaren Typen aufgeführt. Ebenso ist auch beschrieben dass volatile ohne lock auskommt.
Gruss
Programmierhans
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...