Код: Выделить всё
public class SharedObject {
public int counter = 0;
}
p>
Если переменная counter не объявлена энергозависимой, нет никакой гарантии, что значение переменной counter будет записано из регистров ЦП обратно в основной память. Это означает, что значение переменной counter в регистре ЦП может не совпадать со значением в основной памяти.
Как проверить, что видимость не может быть гарантирована без энергозависимости?
Как проверить, что видимость не может быть гарантирована без энергозависимости?
p>
Я попытался создать два потока A и B, где A выполняет counter=1 и утверждает counter==1 в потоке B. Счетчик не украшен переменными. Однако утверждения в потоке B всегда успешны. Если утверждение потока B завершается неудачно, это означает, что счетчик == 0 является проблемой видимости, но этого не произошло. Если это нелегко доказать, нужно ли мне использовать Летучие данные для обеспечения видимости при написании программы, в которой один поток пишет в другой поток для чтения?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -guarantee
Мобильная версия