volatile (Справочник по C#)

Обновлен: Ноябрь 2007

Ключевое слово volatile указывает, что поле может быть изменено несколькими потоками, выполняющимися одновременно. Поля, объявленные как volatile, не проходят оптимизацию компилятором, которая предусматривает доступ посредством отдельного потока. Это гарантирует наличие наиболее актуального значения в поле в любое время.

Как правило, модификатор volatile используется для поля, обращение к которому выполняется через несколько потоков без использования оператора lock для сериализации доступа. Пример volatile сценария с несколькими потоками см. в разделе Практическое руководство. Создание и завершение потоков (Руководство по программированию на C#).

Ключевое слово volatile можно применять к полям следующих типов.

  • Ссылочные типы.

  • Типы указателей (в небезопасном контексте). Обратите внимание, что несмотря на то, что сам указатель может быть "volatile", объект, на который он указывает, таковым быть не может. Другими словами, нельзя объявить указатель "volatile".

  • Целые типы, такие как sbyte, byte, short, ushort, int, uint, char, float и bool.

  • Тип перечисления с целым базовым типом.

  • Параметры универсальных типов, являющиеся ссылочными типами.

  • IntPtr и UIntPtr.

Ключевое слово volatile можно применить только к полям класса или структуры. Локальные переменные не могут быть объявлены как volatile.

Пример

В следующем примере показано как объявить открытую переменную поля в качестве volatile.

class VolatileTest
{
    public volatile int i;

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

Спецификация языка C#

Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:

  • 3.10. Порядок выполнения.

  • 10.5.3 Зависимые поля

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Ключевые слова C#

Модификаторы (Справочник по C#)

Другие ресурсы

Справочник по C#