Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 24045|Antwort: 0

[Konsolenprogramm] Volatiles Keyword-Lernen in .net/C#

[Link kopieren]
Veröffentlicht am 23.05.2018 11:23:40 | | | |
MS Link:Der Hyperlink-Login ist sichtbar.

Das flüchtige Schlüsselwort gibt an, dass ein Feld von mehreren gleichzeitig ausgeführten Threads modifiziert werden kann. Als flüchtig deklarierte Felder sind nicht durch Compiler-Optimierung eingeschränkt (vorausgesetzt, sie werden von einem einzelnen Thread abgerufen). Dies stellt sicher, dass das Feld jederzeit mit dem aktuellsten Wert gerendert wird.

Der flüchtige Modifikator wird typischerweise für Felder verwendet, die von mehreren Threads abgerufen werden, aber den Zugriff nicht mit einer Lock-Anweisung serialisieren.

Flüchtige Schlüsselwörter können auf die folgenden Feldtypen angewendet werden:

  • Zitationstyp.
  • Zeigertyp (in einem unsicheren Kontext). Beachte, dass der Zeiger selbst zwar veränderbar sein kann, das Objekt, auf das er zeigt, jedoch nicht veränderbar sein kann. Mit anderen Worten: "Zeiger auf ein veränderliches Objekt" kann nicht deklariert werden.
  • Typen wie sbyte, byte, short, ushort, int, uint, char, float und bool.
  • Ein Enum-Typ mit einem der folgenden Basistypen: Byte, Sbyte, Short, ushort, int oder Uint.
  • Generische Typparameter, die als Referenztypen bekannt sind.
  • IntPtr und UIntPtr.


Variable Schlüsselwörter können nur auf Felder einer Klasse oder Struktur angewendet werden.Lokale Variablen können nicht als flüchtig deklariert werden


Kein Unsinn mehr, schreibe eine Schleife, um es zu testen:

Testen wir es 10.000 Mal in einer Schleife,stellte fest, dass die Ausgabe von a-Werten korrekt ist, aber,Es erklärt das nichtVolatile ist threadsicherDenn wenn man es mehrfach testet, stellt man fest, dass es zu Berechnungsfehlern kommt! Weil es eine Chance auf ein korrektes Ergebnis und eine Chance auf ein falsches Ergebnis gibt



Code:



Testen wir erneut 100.000 Schleifen, und wir können feststellen, dass der Wert von a falsch ist, denn je kleiner die Anzahl der Schleifen, desto geringer ist die Fehlerwahrscheinlichkeit, und der Fehler ist nicht so offensichtlich, genauso wie es nach 10.000 Schleifen gerade keinen Fehler gab.

An diesem Punkt fügen wir eine Sperre zum Testen hinzu, und es ist zu sehen, dass der Wert von a korrekt berechnet wird, wie wir es erwartet haben.



Code:



Zusammenfassung: Volatile garantiert keine Thread-Sicherheit, wie du im obigen Beispiel sehen kannst.




Vorhergehend:Laden Sie das Paket-Grabbing-Tool smsniff 2.0 in chinesischer Version herunter
Nächster:VS Remote Debug Lösung "Debugging dauert länger als erwartet"
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com