Спасибо, одна из самых понятных лекций про java memory model!
@nikolairomanov60548 жыл бұрын
Разве возможен реордеринг в ситуации r2 = B B = 1 ? (5:45) если бы в одном потоке выполнялся код A=1 B=1 r1 = A r2 = B То да - мы не могли бы сказать наверняка что произойдёт раньше - запись в r1 или в r2 и тогда поток Thread2 { if(r2==1) assert r1 == 1 } мог бы упасть. но первый случай даже с учетом абстракции выглядит странно
@asdfhajdkflhasdfjlhadfqer8 жыл бұрын
Reordering в данном случае действительно выглядит странно. Можно предположить, что должно было быть t1 -> [r1 = A; B = 1] t2 -> [r2 = B; A = 1]
@ВладимирТарасов-ф2ы7 жыл бұрын
Конечно не возможен, эти операции всегда будут в том порядке, в котором они идут. Вот если было бы: r2 = A B = 1 тогда реордеринг мог бы быть
@kenshin457366 жыл бұрын
Так вы дальше смотрели? Я дико проорал, когда он опроверг реордеринг в первом примере, объясняя hb на 13 минуте.
@ololyona5 жыл бұрын
@@kenshin45736 опечатался в примере наверное
@Flaer19858 жыл бұрын
как-то коротко получилось. как-будто не хватает части ₽лекции
@VDlasov8 жыл бұрын
В примере Singleton нужно добавить ключевое слово "volatile" к переменной? "volatile static KeeperSingle instance;"
@asdfhajdkflhasdfjlhadfqer8 жыл бұрын
И зачем ? Мне сложно придумать аргумент за добавление volatile.
@VDlasov8 жыл бұрын
PreVet *При использовании многопоточности: я читал, что может не обновиться значение переменной. И слово volatile гарантирует порядок. Поэтому спросил.
@asdfhajdkflhasdfjlhadfqer8 жыл бұрын
Синглетон подразумевает, что ссылка на экземпляр класса будет создана при первом запросе на получение синглетона и в дальнейшем не будет модифицироваться. Если кто-то решит ее закешировать, то никакие изменения не должны пройти мимо, т.к. грубо говоря, адрес объекта-синглетона не изменится, закешированные данные останутся в актуальном состоянии. По поводу порядка сложно что-то сказать из-за отсутствия конкретного примера использования. В любом случае, запрет на оптимизацию перестановок коснется не только Ваших критических участков.
@arturdumchev30557 жыл бұрын
Да, нужно либо "volatile", либо "final" добавить, тут подробнее habrahabr.ru/post/129494/
@poroshok-ukhodi7 жыл бұрын
Нам всё равно нужна синхронизация в методе getInstance() потому что иначе экземпляр может два раза создастся. Насколько я понимаю, если есть синхронизация, то в этом случае volatile уже не нужен, так как синхронизация обеспечивает happens before. Я могу ошибаться
@CyanideBtm6 жыл бұрын
закон мура о процессорах и количестве транзисторов, а не о скорости доступа к памяти. The Free Lunch Is Over - о том, что закон мура перестаёт работать и основной буст будет за счёт параллелизма. там нет ни слова о памяти и скорости доступа к ней. такое ощущение, что автор не достаточно хорошо ознакомился с предметной областью.
@haykmkrtchyan70934 жыл бұрын
Так и не объяснили до конца Double check) Если кому-то интересно, в последном примере где закончился видео, это назывется Double check - вот видео о нем - kzbin.info/www/bejne/a5a3gn6vgJKlfdU
@kornext4 жыл бұрын
Спасибо! Пригодилось.
@hopaandroid34278 жыл бұрын
Круто !
@avpmk Жыл бұрын
17:00 Как-раз можно операции после volatile write печат печат пегмати переставить выше. Наоборот, да, нельзя.
@avpmk Жыл бұрын
А ну он дальше об этом сказал 20:56
@random_nick_for_comments8 жыл бұрын
какая-то глупость в примере с реордерингом и никто не задал на лекции вопрос. Ну и синглтон в конце лекции не пашет. Как было упомянуто раньше нужен волатайл. Но всё равно было интересно, спасибо
@sergeykurk7 жыл бұрын
тоже не понял, сначала говорится, что реордеринг в одном потоке не возможен, если 1 переменная участвует, потом оказывается возможен
@АртемПлюснин-о6б Жыл бұрын
Скомкано, что-то пропустил и не стал объяснять, лекция не очень.
@constantsvariables8665 жыл бұрын
Бред в лекции сам себе противоречит. Сначала говорит что все операции до и после volatile-записи не могу перемещаться вверх и вниз соответственно (рисуя на доске), потом говорит что у него A=43 (на слайдах) может улететь куда угодно . Спасибо что ломаете мозг, из-за вас любое желание учиться пропадает.Хорошо хоть по зеленым квадратикам на слайдах (которые не ваши и к изменению которых ваши руки не дотянулись) понятно что куда может улететь.
@ivanzhukov47675 жыл бұрын
kzbin.info/www/bejne/n3OVf2uXptynrsU Вот оригинал, где можно увидеть как должно быть. В итоге там должно было быть сказано не про reordering, а то, что в рамках гонки потоков, второй поток может увидеть новое значение 43 или старое 42
@рачс Жыл бұрын
Ужасная противоречивая лекция в примере с реордерингом. Жирный минус.
@РусланКутугин-к7и5 жыл бұрын
куча опечаток ошибок в подсчетах
@duckdeduct522 Жыл бұрын
Вы чего, про какие то высшие материи с синглтоном и реордингом?! Тут каменный век..математики....аналитики 3:00 L2 медленнее L1 в 14 раз (7 / 0.5) - здесь слегка приуменьшил L3 медленнее L1 в 200 раз (100/ 0.5) - зато здесь до овер увеличил. Доверяйте свои денюжки таким счетоводам,. Тетка в задрыпанном сельпо магазе на счетах сознательно и то меньше вас обЪегорит, чем такие бессознательные, бескорыстные, но тупые.