C# Jitter: Читать введение
Если у вас есть подобная конструкция, это кажется возможным в соответствии со связанной статьей ( https://msdn.microsoft.com/en-us/magazine/jj883956.aspx параграф Прочтите Введение)...
var temp = myRef;
temp.DoSomething1();
//... at a later time
temp.DoSomething2();
... эта временная переменная оптимизируется джиттером при прочтении введения.
Вопрос: есть ли способ гарантировать, что я действительно работаю с копией ссылки, а не с введенным чтением оригинальной ссылки. Поскольку в моей программе myRef может все время изменяться путем назначения нового объекта, мне нужно убедиться, что я обращаюсь к одному и тому же объекту в течение всей функции всякий раз, когда мне нужно что-то сделать с объектом.
Как насчет:
- temp = Thread.VolatileRead (myRef)
- temp = Volatile.Read (myRef)
- temp = CompareExchange (myRef, null, null);
Может ли случиться так, что джиттер несколько раз вызывает одну из операций чтения, вместо этого создавая копию ссылки?