170 похожих чатов

Я тоже пожалуй тогда вброшу немного, раз сегодня говорим о

многопоточности. Есть такой метод у атомиков lazySet(). Судя по документации - он не допускает реордеринга операций при записи, но не гарантирует строгую видимость как volatile write. Так вот, наткнулся на него, пару лет назад когда дебажил очередную реактивную либу, вопрос: какие оптимизации на основе него можно делать? При условии что в другом потоке обновленное значение все равно не будет гарантировано видно сразу( не понятно, как это можно использовать) ?
Банально например чтобы в такой ситуации:
int x = 0;
AtomicInteger aX = new AtomicInteger(0);
x = 1;
aX.lazySet(1);
не прочитать x = 0, если прочли, что aX = 1;
А если прочитали aX = 0, то х либо 0 либо 1.

1 ответов

15 просмотров

lazySet -- это то, что везде называется "release", например, VarHandle.setRelease. Поэтому ваш пример работает как надо. Единственное, что он не гарантирует (т.е. слабее чем volatile) -- это глобальный консенсус. См. "Release-Acquire (RA)" здесь: http://gee.cs.oswego.edu/dl/html/j9mm.html

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта