2 von 2 fanden dies hilfreich - Dieses Thema bewerten.

volatile (C#-Referenz)

Das volatile-Schlüsselwort gibt an, dass ein Feld von mehreren gleichzeitig ausgeführten Threads geändert werden kann. Mit volatile deklarierte Felder unterliegen nicht den Compileroptimierungen, für die der Zugriff durch einen Thread Voraussetzung ist. Auf diese Weise wird sichergestellt, dass im Feld stets der aktuelle Wert vorhanden ist.

Der volatile-Modifizierer wird normalerweise für ein Feld verwendet, auf das mehrere Threads zugreifen, ohne dass die lock-Anweisung (C#-Referenz)-Anweisung zur Zugriffsserialisierung verwendet wird. Ein Beispiel für volatile in einem Multithreadszenario finden Sie unter Gewusst wie: Erstellen und Beenden von Threads (C#-Programmierhandbuch).

Das volatile-Schlüsselwort kann auf Felder der folgenden Typen angewendet werden:

  • Verweistypen.

  • Zeigertypen (in einem unsicheren Kontext) Beachten Sie, dass der Zeiger flüchtig sein kann, das Objekt, auf den er zeigt, jedoch nicht. Mit anderen Worten können Sie keinen "Zeiger auf volatile" deklarieren.

  • Ganzzahlige Typen wie sbyte, byte, short, ushort, int, uint, char, float und bool.

  • Einen Enumerationstyp mit einem ganzzahligen Basistyp.

  • Generische Typparameter, von denen bekannt ist, dass sie Verweistypen sind.

  • IntPtr und UIntPtr.

Das volatile-Schlüsselwort kann nur auf Felder einer Klasse oder Struktur angewendet werden. Lokale Variablen können nicht als volatile deklariert werden.

Im folgenden Beispiel wird veranschaulicht, wie eine public-Feldvariable als volatile deklariert wird.

// csharp_volatile.cs
// compile with: /target:library
class Test
{
   public volatile int i;

   Test(int _i)
   {
      i = _i;
   }
}

Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:

  • 3.10 Ausführungsreihenfolge

  • 10.4.3 Flüchtige Felder

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)