volatile для ссылочного типа в .net 4.0

Я запутался в volatile для ссылочного типа.

Я понимаю, что для примитивного типа, volatile может отражать изменения значения из другого потока немедленно. Для ссылочного типа он может отражать изменения адреса немедленно. Однако, что насчет содержимого объекта. Они все еще кэшируются?

(Предполагая, что List.Add() является атомарной операцией)

Например, у меня есть:

class A
{
     volatile List<String> list;
     void AddValue()
     {
        list.Add("a value");
     }

}

Если один поток вызывает функцию AddValue, адрес списка не меняется, получит ли другой поток обновление об изменении "содержимого" списка, или содержимое может кэшироваться для каждого потока и не обновляться для других потоков?

8
задан Andrew Barber 28 December 2011 в 23:34
поделиться