изредка, так что лучше вообще его избегать.)

ел несколько вопросов на эту же тему, но связанных с общими переменными (значения и ссылочные типы). Ответ принятэтот вопрос говорит:

Раздел I, раздел 12.6.6 спецификации CLI гласит: «Соответствующий CLI должен гарантировать, что доступ для чтения и записи к правильно выровненным ячейкам памяти, не превышающим размер собственного слова, является атомарным, когда все обращения к записи в расположении имеют одинаковый размер «.

Ссылочные переменные (то есть классы) - это указатели, равные собственному размеру слова, но у меня есть пара сомнений:

Гарантированно ли ссылки находятся в правильно выровненных ячейках памяти?

Я не понимаю последнюю часть. Что это значит?«... когда все доступы для записи в одно и то же место».

Короче говоря, гарантированно ли obj2 действителен на каждой итерации цикла в следующем коде?

class MyClass
{
    private OtherClass m_Object;

    void Thread1()
    {
        while(true)
        {
            OtherClass obj1 = new OtherClass();
            m_Object = obj1;
        }
    }

    void Thread2()
    {
        while (true)
        {
            OtherClass obj2 = m_Object;
            // Is obj2 guaranteed to be valid?
            obj2.Check();
        }
    }
}

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

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