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.
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
Riferimenti
Modificatori (Riferimenti per C#)