Метод Read
Volatile.Read читает значение
так, чтобы не использовать устаревшую
копию из регистра. Запись -
Write.
Для атомарного ++ берут
Interlocked.
Синтаксис
int value = Volatile.Read(ref location);
Пример
Давайте прочитать после
Volatile.Write:
using System;
using System.Threading;
class Program
{
static void Main()
{
int location = 0;
Volatile.Write(ref location, 12345);
int res = Volatile.Read(ref location);
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте прочитать строку
"abcde":
using System;
using System.Threading;
class Program
{
static void Main()
{
string? location = null;
Volatile.Write(ref location, "abcde");
string? res = Volatile.Read(ref location);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитать после обычного присваивания в одном потоке:
using System;
using System.Threading;
class Program
{
static void Main()
{
int location = 0;
location = 12345;
int res = Volatile.Read(ref location);
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Смотрите также
-
метод
Write,
записать перед чтением -
Volatile,
класс, где объявленRead -
Increment,
атомарное изменение счётчика -
Interlocked,
операции без гонки