Laden...

Lock für read/write von bool nötig?

Erstellt von rollerfreak2 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.987 Views
rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 13 Jahren
Lock für read/write von bool nötig?

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...

6.911 Beiträge seit 2009
vor 13 Jahren

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!"

rollerfreak2 Themenstarter:in
916 Beiträge seit 2008
vor 13 Jahren

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...

49.485 Beiträge seit 2005
vor 13 Jahren

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

4.221 Beiträge seit 2005
vor 13 Jahren

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.

volatile (C#-Referenz)

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...