MS-linkki:Hyperlinkin kirjautuminen on näkyvissä.
Volatili avainsana tarkoittaa, että kenttää voidaan muokata useiden säikeiden suorittamalla samanaikaisesti. Volatiileiksi ilmoitetut kentät eivät ole rajoitettuja kääntäjän optimoinnilla (olettaen, että niihin pääsee käsiksi yhdellä säieellä). Tämä varmistaa, että kenttä renderöidään aina viimeisimmällä arvolla.
Volatiili-modifikaattoria käytetään tyypillisesti kentille, joihin pääsee useita säikeitä, mutta jotka eivät sarjoitetaan pääsyä lukituslauseella.
Volatiileja avainsanoita voidaan soveltaa seuraaviin kenttyyppeihin:
- Viittaustyyppi.
- Osoitintyyppi (turvattomassa tilanteessa). Huomaa, että vaikka osoitin itsessään voi olla muokattavissa, objekti, johon se osoittaa, ei voi olla muokattavissa. Toisin sanoen, "osoitinta muokattavaan objektiin" ei voi ilmoittaa.
- tyypit kuten sbyte, byte, short, ushort, int, uint, char, float ja bool.
- Enum-tyyppi, jolla on jokin seuraavista perustyypeistä: byte, sbyte, short, ushort, int tai uint.
- Yleiset tyyppiparametrit, jotka tunnetaan referenssityyppeinä.
- IntPtr ja UIntPtr.
Muuttuvia avainsanoja voidaan soveltaa vain tietyn luokan tai rakenteen kenttiin.Paikallisia muuttujia ei voida julistaa volatiileiksi。
Ei enää hölynpölyä, kirjoita silmukka testatakseni:
Testataan sitä 10 000 kertaa silmukassa,havaittiin, että arvon tulos on oikea, mutta,Se ei selitäVolatili on säikeiden turvallinenKoska jos testaat sitä monta kertaa, huomaat, että laskentavirheitä tulee olemaan! Koska on mahdollisuus oikeaan lopputulokseen ja mahdollisuus väärään lopputulokseen
Koodi:
Testataan 100 000 silmukkaa uudelleen, ja voimme huomata, että a:n arvo on väärä, koska mitä pienempi silmukoiden määrä, sitä pienempi on virheen todennäköisyys, eikä virhe ole niin ilmeinen, aivan kuten juuri nyt ei ollut virhettä 10 000 silmukan jälkeen.
Tässä vaiheessa lisäämme lukon testaukseen, ja nähdään, että arvo on laskettu oikein kuten odotimme.
Koodi:
Yhteenveto: volatili ei takaa säikeen turvallisuutta, kuten yllä olevasta esimerkistä näkyy.
|