volatile (Referencia de C#)

Actualización: noviembre 2007

La palabra clave volatile indica que varios subprocesos que se ejecutan a la vez podrían modificar un campo. Los campos que se declaran como volatile no están sujetos a optimizaciones del compilador que suponen el acceso por un subproceso único. Esto garantiza que el valor más actualizado está en todo momento presente en el campo.

El modificador volatile suele utilizarse para un campo al que tengan acceso varios subprocesos sin utilizar la instrucción lock para serializar el acceso. Vea Cómo: Crear y terminar subprocesos (Guía de programación de C#) para obtener un ejemplo de volatile en un escenario de multiproceso.

La palabra clave volatile se puede aplicar a los campos de estos tipos:

  • Tipos de referencia.

  • Tipos de puntero (en un contexto no seguro). Tenga en cuenta que aunque el propio puntero puede ser volátil, no ocurre lo mismo con el objeto al que apunta. Es decir, no puede declarar un "puntero como volátil".

  • Tipos enteros como sbyte, byte, short, ushort, int, uint, char, float y bool.

  • Tipos de enumeración con un tipo base entero.

  • Parámetros de tipo genéricos que se sabe que son tipos de referencia.

  • IntPtr y UIntPtr.

La palabra clave volatile sólo se puede aplicar a los campos de una clase o estructura. Las variables locales no se pueden declarar como volatile.

Ejemplo

El ejemplo siguiente muestra cómo declarar una variable de campo pública como volatile.

class VolatileTest
{
    public volatile int i;

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

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 3.10 Orden de ejecución

  • 10.5.3 Campos volátiles

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

Modificadores (Referencia de C#)

Otros recursos

Referencia de C#