Volatile vs. Static v C-éčku

Od: Datum: 13.02.14 13:26 odpovědí: 1 změna: 13.02.14 13:45

Dobrý den,

mohl by mi posím někdo vysvětlit jaký rozdil je mezi proměnnou delkarovanou jako volatile a static v Céčku?


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 13.02.14 13:45

Věc není postavená tak, že proměnná může být statická nebo volatilní. I statická proměnná může být současně deklarována jako volatilní.

Statická proměnná je taková, které existuje v rámci modulu či třídy pouze jednou a její hodnota je v rámci tohoto kontextu sdílena. Pokud máte třídu se statickou proměnnou, sdílí všechny instance tutéž hodnotu. Jakmile je hodnota změněna, změní se pro všechy instance.

Volatilní proměnná je taková, u které je kompilátor instruován, že se její hodnota může změnit, aniž by to vyplývalo ze znalosti kódu. Nemůže tedy provádět optimalizace kódu v souvislosti s touto proměnnou, ale musí zajistit, že je obsah proměnné při každém použití vždy opětovně načten z paměti (právě pro případ, že se její hodnota "na pozadí" změnila). Typicky mohou tuto proměnnou měnit jiná vlákna, která běží paralelně mimo hlavní vlákno.

Ohodnoceno: 0x
 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.