Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 24045|Svare: 0

[Konsollprogram] Ustabil nøkkelordlæring i .net/C#

[Kopier lenke]
Publisert på 23.05.2018 11:23:40 | | | |
MS Link:Innloggingen med hyperkoblingen er synlig.

Det flyktige nøkkelordet indikerer at et felt kan endres av flere tråder som kjører samtidig. Felt deklarert som flyktige er ikke begrenset av kompilatoroptimalisering (forutsatt at de aksesseres av en enkelt tråd). Dette sikrer at feltet alltid gjengis med den nyeste verdien.

Den flyktige modifikatoren brukes vanligvis for felt som brukes av flere tråder, men som ikke serialiserer tilgangen med en låsesetning.

Flyktige nøkkelord kan brukes på følgende typer felt:

  • Siteringstype.
  • Pekertype (i en usikker kontekst). Merk at mens pekeren selv kan være foranderlig, kan objektet den peker på ikke være foranderlig. Med andre ord kan ikke «peker til et foranderlig objekt» erklæres.
  • typer som sbyte, byte, short, ushort, int, uint, uint, char, float og bool.
  • En enum-type med en av følgende basetyper: byte, sbyte, short, ushort, int eller uint.
  • Generiske typeparametere som er kjent for å være referansetyper.
  • IntPtr og UIntPtr.


Variable nøkkelord kan kun brukes på felt i en klasse eller struktur.Lokale variabler kan ikke erklæres som flyktige


Ikke mer tull, skriv en løkke for å teste den:

La oss teste det 10 000 ganger i en løkke,fant at utdataene til en verdi er korrekte, men,Det forklarer ikkeVolatile er trådsikkerFor hvis du tester det mange ganger, vil du oppdage at det oppstår regnefeil! Fordi det er en sjanse for et korrekt resultat og en sjanse for et feil resultat



Kode:



La oss teste 100 000 løkker igjen, og vi kan finne at verdien av a er feil, fordi jo færre løkker det er, desto mindre er sjansen for feil, og feilen er ikke så åpenbar, akkurat som det ikke var noen feil etter 10 000 løkker nettopp.

På dette tidspunktet legger vi til en lås for å teste, og det kan sees at verdien av a beregnes korrekt som forventet.



Kode:



Sammendrag: Volatile garanterer ikke trådsikkerhet, som du kan se i eksempelet over.




Foregående:Last ned pakkeverktøyet smsniff 2.0 kinesisk versjon
Neste:VS Remote Debug "Debug-operasjonen tar lengre tid enn forventet"-løsning
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com