Я не могу найти ни одного примера 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;
? они уже имеют аргумент адреса, который явно удерживает значение.