Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 24045|Antwoord: 0

[Consoleprogramma] vluchtig zoekwoordleren in .net/C#

[Link kopiëren]
Geplaatst op 23-05-2018 11:23:40 | | | |
MS Link:De hyperlink-login is zichtbaar.

Het vluchtige trefwoord geeft aan dat een veld kan worden aangepast door meerdere threads die tegelijkertijd worden uitgevoerd. Velden die als vluchtig zijn gedeclareerd worden niet beperkt door compileroptimalisatie (ervan uitgaande dat ze door één enkele thread worden benaderd). Dit zorgt ervoor dat het veld altijd met de meest recente waarde wordt weergegeven.

De vluchtige modifier wordt doorgaans gebruikt voor velden die door meerdere threads worden benaderd, maar die de toegang niet serialiseren met een lock-instructie.

Vluchtige trefwoorden kunnen worden toegepast op de volgende soorten velden:

  • Citatietype.
  • Pointertype (in een onveilige context). Let op dat hoewel de pointer zelf veranderbaar kan zijn, het object waarnaar hij wijst niet veranderbaar kan zijn. Met andere woorden, "pointer to a mutable object" kan niet worden verklaard.
  • Typen zoals Sbyte, Byte, Short, Ushort, Int, Uint, Char, Float en Boool.
  • Een enum-type met een van de volgende basistypen: byte, sbyte, short, ushort, int of uint.
  • Generieke typeparameters waarvan bekend is dat ze referentietypes zijn.
  • IntPtr en UIntPtr.


Variabele trefwoorden kunnen alleen worden toegepast op velden van een klasse of structuur.Lokale variabelen kunnen niet als vluchtig worden verklaard


Geen onzin meer, schrijf een lus om het te testen:

Laten we het 10.000 keer in een lus testen,vond dat de output van een waarde correct is, maar,Het verklaart het nietVolatile is thread-veiligWant als je het meerdere keren test, zul je merken dat er rekenfouten zullen zijn! Omdat er een kans is op een correct resultaat en een kans op een fout resultaat



Code:



Laten we 100.000 lussen opnieuw testen, en we kunnen ontdekken dat de waarde van a onjuist is, omdat hoe kleiner het aantal lussen, hoe kleiner de kans op fout, en de fout is minder duidelijk, net zoals er na 10.000 lussen net geen fout was.

Op dit moment voegen we een lock toe om te testen, en het is te zien dat de waarde van a correct is berekend zoals we verwachtten.



Code:



Samenvatting: vluchtig is geen garantie voor de veiligheid van de thread, zoals je kunt zien in het bovenstaande voorbeeld.




Vorig:Download de pakketgrijptool smsniff 2.0 Chinese versie
Volgend:VS Remote Debug "Debug-operatie duurt langer dan verwacht" oplossing
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com