jei neklystu, cia parasyta +- for dummies:
http://blog.regehr.org/archives/28
*6. Using volatile to get atomicity*
<...>
*Summary: Volatile has nothing to do with atomicity. Use locks.*
ka dar pamirsau pries 2-3 postus parasyt ir pasiulyt, kad vizualizuoti
problemos esme: kintamojo tipa is int pakeisti i char ir maks reiksme
sumazinti iki 0xff. stebuklingai volatile "prades veikti" taip kaip EJS
tikisi ir "problemos neliks" :)
On 2015.06.07 20:55, ejs wrote:
> 2015-06-06 20:34, CodeC rašė:
>
>> sesk vel du
>> vieta kur "kazkas" tikrai atsitinka, tai c uzkrovimo is ram vieta ("if
>> (c > 623)") eilute. todel, kad tai NE atomic operacija. tau jau gal 3
>> zmones parase esme, bet vistiek toliau nesamones kliedi ir dar kitus
>> klaidini. "jei tik skaityt moketum..."
>
> "c" yra monotoniškai didėjantis.
> Kokios jo galimos reikšmės jai jis nuskaitomas kolizijos metu ir kaip
> tai įtakos programos logiką?
>
> Kitas momentas: kadangi "c" yra keičiamas ~1,2 kHz dažniu, dabartinė
> programa gerokai dažniau matys tą pačią "c" reikšmę nei pasikeitusią.
>
> Ok, jei reikia tikslios "c" reikšmės, pasiimi ją į registrą ir cikle
> operuoji registru, o ne kintamuoju.
> Fin ?
>