Condividi tramite


volatile (Riferimenti per C#)

Aggiornamento: novembre 2007

La parola chiave volatile indica che un campo potrebbe essere modificato da più thread in esecuzione contemporaneamente. I campi dichiarati volatile non sono soggetti a ottimizzazioni del compilatore che presuppongono l'accesso da un singolo thread. In questo modo nel campo è sempre presente il valore più aggiornato.

Il modificatore volatile è utilizzato in genere per un campo al quale accedono più thread senza ricorrere all'istruzione lock per la serializzazione dell'accesso. Per un esempio di volatile in uno scenario multithreading, vedere Procedura: creare e terminare thread (Guida per programmatori C#).

La parola chiave volatile può essere applicata ai seguenti tipi di campi:

  • Tipi di riferimento.

  • Tipi puntatore in un contesto unsafe. Si noti che mentre il puntatore stesso può essere volatile, l'oggetto al quale punta non può esserlo. In altre parole, non è possibile dichiarare un "puntatore volatile".

  • Tipi integrali quali sbyte, byte, short, ushort, int, uint, char, float e bool.

  • Tipo enum con un tipo base integrale.

  • Parametri di tipo generico riconosciuti come tipi di riferimento.

  • IntPtr e UIntPtr.

La parola chiave volatile può essere applicata solo a campi di una classe o una struttura. Le variabili locali non possono essere dichiarate volatile.

Esempio

Nell'esempio riportato di seguito viene illustrato come dichiarare la variabile di un campo pubblico come volatile.

class VolatileTest
{
    public volatile int i;

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

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 3.10 Ordine di esecuzione

  • 10.5.3 Campi volatili

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

Modificatori (Riferimenti per C#)

Altre risorse

Riferimenti per C#