[Java lista] A synchronized mítosz
biziclop
biziclop at gmail.com
2008. Júl. 31., Cs, 15:27:55 CEST
Szerintem nem ugyanarrol beszelunk. Nalam az atomicitas azt jelenti,
hogy kivulrol nezve egy muvelet vagy megtortent, vagy nem es nincs
koztes allapot. Bar jobban belegondolva, ez valoban az "isolation"
nevu tulajdonsag.
Mindegy, a lenyeg, hogy sorrendezesrol szo sem volt. :)
lsp
2008/7/31 Auth Gábor <auth.gabor at javaforum.hu>:
> Halihó!
>
> biziclop ezt írta:
>> Lokalis valtozon meg mit szamit? :)
>
> Fizikailag ez úgy néz ki, hogy a proci betölti az adott változót egy
> regiszterbe, növeli az értékét, majd visszaírja a memóriába, ez három
> utasítás, nem atomi művelet, ezért volatile esetén is simán lehet, hogy kettő
> szál teszi ezt, és nem azt kapod, amit vártál.
> A volatile azt jelzi a fordító felé, hogy a változón való művelet esetén
> mindig töltse be azt a memóriából, végezze el a műveletet majd írja ki a
> memóriába az új értéket.
> A volatile nélkül a fordító olyan kódot fog fordítani, amelynél betölti a
> lehető legtöbb regiszterbe a változókat, majd a sok-sok művelet végén
> visszaírja azokat. És így több esélyt ad arra, hogy az ütemező megszakítja a
> folyamatot, elmentődnek a regiszter értékek, és amikor folytatná a munkát, és
> a művelet végén írná vissza a regiszterekből az értékeket, akkor egy másik
> szál már rég megváltoztatta azokat, így hibás értékek lesznek a változókban.
> --
> http://www.javaforum.hu -=- http://www.enaplo.hu
> Auth Gábor -=- http://www.javaforum.hu/web/10/authgabor
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
További információk a(z) Javalist levelezőlistáról