volatile
Collapse the table of content
Expand the table of content
El documento está archivado y esta información podría estar obsoleta

volatile (Referencia de C#)

La palabra clave volatile indica que varios subprocesos que se ejecutan a la vez pueden 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 (Instrucción, Referencia de C#) 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.

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

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

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

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

  • 3.10 Orden de ejecución

  • 10.4.3 Campos volátiles

Mostrar:
© 2016 Microsoft