MS Link:Hüperlingi sisselogimine on nähtav.
Volatiilne märksõna näitab, et välja saab muuta, kui mitu lõime täituvad samaaegselt. Välju, mis on kuulutatud volatiilseteks, ei ole kompilaatori optimeerimisega piiratud (eeldades, et neile pääseb ligi ühe lõimega). See tagab, et väli kuvatakse alati kõige värskema väärtusega.
Volatiilset modifikaatorit kasutatakse tavaliselt väljade puhul, millele pääseb ligi mitu lõime, kuid mis ei serialiseeri ligipääsu lukustuslause abil.
Volatiilseid märksõnu saab rakendada järgmistele valdkondadele:
- Viidete tüüp.
- Osuti tüüp (ebaturvalises kontekstis). Pane tähele, et kuigi osutit ise võib olla muudetav, ei saa objekt, millele see osutab, olla muudetav. Teisisõnu, "osutajat muutuvale objektile" ei saa deklareerida.
- tüübid nagu sbyte, byte, short, ushort, int, uint, char, float ja bool.
- Enum-tüüp, millel on üks järgmistest baastüüpidest: bait, sbyte, short, ushort, int või uint.
- Üldised tüübiparameetrid, mis on teadaolevalt viitetüübid.
- IntPtr ja UIntPtr.
Muutuvate märksõnade puhul saab rakendada ainult klassi või struktuuri väljadele.Kohalikke muutujaid ei saa deklareerida volatiilseteks。
Ei mingit enam, kirjuta tsükkel, et seda testida:
Testime seda 10 000 korda järjest,leidis, et väärtuse väljund on õige, kuid,See ei selgitaVolatiilne on lõimekindelSest kui sa seda mitu korda testid, leiad, et arvutusvigu tekivad! Sest on võimalus õigeks tulemuseks ja võimalus valeks tulemuseks
Kood:
Testime uuesti 100 000 tsüklit ja leiame, et a väärtus on vale, sest mida väiksem on silmuste arv, seda väiksem on vea tõenäosus, ja viga pole nii ilmne, nagu just pärast 10 000 tsüklit viga ei olnud.
Sel hetkel lisame testimiseks luku ja on näha, et a väärtus arvutatakse õigesti, nagu ootasime.
Kood:
Kokkuvõte: volatiil ei taga lõime turvalisust, nagu näete ülaltoodud näites.
|