MS link:A hiperlink bejelentkezés látható.
A volatil kulcsszavas azt jelzi, hogy egy mezőt több szál egyszerre futtatva módosítható. A foratilisnak nyilvánított mezők nem korlátozódnak a fordító optimalizálásával (feltéve, hogy egyetlen szál érhető el őket). Ez biztosítja, hogy a mező mindig a legfrissebb értékkel jelenik meg.
A volatile módosítót általában olyan mezőkre használják, amelyekhez több szál fér hozzá, de nem serializálják a hozzáférést zár utasítással.
A volatil kulcsszavak alkalmazhatók a következő típusú mezőkre:
- Hivatkozás típusa.
- Mutató típus (veszélyes helyzetben). Fontos megjegyezni, hogy bár maga a mutató változható, az objektum, amire mutat, nem lehet változtatható. Más szóval, a "módosítható objektumra mutató" nem lehet deklarálni.
- olyan típusok, mint a sbyte, byte, short, ushort, int, uint, char, float és bool.
- Egy enum típus, amelynek alaptípusa az alábbi típusok egyike: byte, sbyte, short, ushort, int vagy uint.
- Általános típusparaméterek, amelyek ismerten referenciatípusok.
- IntPtr és UIntPtr.
A változó kulcsszavakat csak egy osztály vagy struktúra mezőire lehet alkalmazni.Helyi változókat nem lehet ingadonciálisnak nyilvánítani。
Nincs több hülyeség, írj egy hurkot a teszteléshez:
Teszteljük 10 000-szer egy körben is,megállapították, hogy egy érték kimenete helyes, de,Nem magyarázza megVolatile szál biztonságosMert ha sokszor teszteled, találod majd a számítási hibákat! Mert van esély a helyes eredményre, és van esélye a rossz eredményre
Kód:
Teszteljük újra 100 000 hurkot, és megállapítjuk, hogy az értéke helytelen, mert minél kisebb a hurk, annál kisebb a hiba esélye, és a hiba nem olyan nyilvánvaló, ahogy most 10 000 hurk után sem volt hiba.
Ekkor hozzáadunk egy zárat a teszthez, és látható, hogy az a értéke helyesen számított, ahogy vártuk.
Kód:
Összefoglaló: a volatil nem garantálja a szálbiztonságot, ahogy a fenti példában is látható.
|