для получения дополнительной информации о заборах памяти

м, у меня есть свойство, чей установщик защищен блокировкой, но без какой-либо блокировки вокруг получателя, например,

private long _myField;
public long MyProperty
{
    get { return _myField; }
    set { lock(whatever) _myField = value; }
}

В дополнение к синхронизации записи (но не чтения), блокировка, а точнее Monitor.Exit, должна вызыватьлетучая запись, Давайте теперь скажем, что у нас есть два потока A и B, и происходит следующая последовательность:

A читает текущее значениеMyProperty.B записывает новое значение вMyProperty.A читает текущее значениеMyProperty очередной раз.

Q: А теперь гарантированно увидеть новое значение? Или наша блокировка просто гарантирует, что B своевременно записывает в основную память, а другие потоки не читают новое значение? Или же ответ может зависеть от того, работаем ли мы в .Net 2+ или в «более слабой» реализации ECMA?

Ответы на вопрос(2)

Ваш ответ на вопрос