Я не могу найти ни одного примера VolatileRead/write (try...), но все же:
Когда следует использовать volatile vs VolatileRead?
AFAIK вся цель volatile заключается в создании половинных заборов, поэтому:
- Для операции READ чтение/запись (по другим темам), которая появляется ПОСЛЕ текущей операции, не будет проходить перед ограждением. следовательно, мы читаем последнее значение.
Вопрос № 1
Итак, для чего мне нужен VolatileRead? кажется, что volatile уже выполняет свою работу.
Плюс - в С# все записи являются volatile (в отличие от Java), независимо от того, пишете ли вы в volatile или в энергонезависимом поле - и поэтому я спрашиваю: почему я нужен volatileWrite?
Вопрос № 2
Это реализация для VolatileRead:
[MethodImpl(MethodImplOptions.NoInlining)]
public static int VolatileRead(ref int address)
{
int num = address;
MemoryBarrier();
return num;
}
Почему существует строка int num = address;? они уже имеют аргумент адреса, который явно удерживает значение.