Александр Ланцов - Не happens-before единым: нестандартные семантики
Ғылым және технология
Ближайшая конференция - Joker 2024, 9 октября (Online), 15-16 октября (Санкт-Петербург + трансляция).
Подробности и билеты: jrg.su/Ypf1HW
- -
Реклама. Публичное акционерное общество «Сбербанк России», 2RanykF1Hix
- -
Несмотря на то, что новые режимы упорядочивания доступов к памяти стали доступны еще с выходом JDK 9, немногие разработчики знакомы с ними. Хотя эти семантики все еще не имеют формального описания в модели памяти Java, они широко используются в популярных многопоточных библиотеках: JCTools, Disruptor, Agrona, Aeron и многих других. Поэтому для изучения исходного кода этих проектов нужно понимать существующие режимы упорядочивания.
Но даже для исключительно прикладных разработчиков-пользователей этих библиотек понимание свойств этих режимов позволяет осознанно подходить к выбору используемой реализации многопоточных структур данных. И все это может увеличить производительность всей системы.
В докладе последовательно рассматриваются все доступные на данный момент режимы: plain, opaque, release-acquire, volatile. Для каждого показаны его высокоуровневые свойства и примеры использования.
Доклад будет интересен всем, кто интересуется многопоточным программированием, моделями памяти и популярными lock-free библиотеками.
Презентация к докладу: squidex.jugru.team/api/assets...
#java #performance
Пікірлер: 24
Замечательный доклад! Все очень кратко и понятно соблюдая строгие гарантии подачи и восприятия данного материала.
Мегакрутой чувак!!! Хочу ещё 20 его двухчасовых лекций. Очень просто и доступно, учись, Шипилёв, как надо!
Отличный доклад, Саша) Приятно видеть тебя спикером)
Отличный доклад, можно даже начинающим показывать. Редко такое на конфах увидишь
Превосходный доклад!
Очень круто, и по содержанию, и по презентации. Все четко, без воды и с примерами. Жги еще.
Очень доступное изложение, без нюансов конечно, но стоит посмотреть
крутой доклад. Вспоминаем времена Шипилёва
Спасибо! Интересный доклад и хорошая подача.
Шикарный доклад!
да последний пример про панду и котика просто шедеврально
@Alexander-mj3jk
Ай бұрын
нехрен с релятивистскими скоростями бегать :)))
Крутой доклад, спасибо!
Доклад огонь!
Cool presentation, thank you for that anr shared benchmark
Причинность это и есть HB...
есть тут те, кто использует эти семантики в продакшн коде?)
@stokitko
9 ай бұрын
Нет, но теперь на собесах будут новые дебильные вопросы
@user-dd6ie1ol5s
9 ай бұрын
Как раз на работе соседняя команда разрабатывает библиотечку для кастомных очередей с замороченной логикой. Там используется AtomicBoolean переменная как флажок останова всего механизма очереди. Там как раз применяется связка методов .setRelease(true), .getAcquire(). До этого доклада лазил по SO тредам и каким-то старым статьям по Java Memory Model - нифига не понял, только мозг опух. Здесь в этом докладе хотя бы что-то более менее встало на свои места, реально крутой бодрый докладик. Спикеру, оргам спасибо, респект.
@JavaAverageBadCoder
3 ай бұрын
Да, есть вархендлы на проде
@nikitanovosad9937
3 ай бұрын
@@JavaAverageBadCoder расскажите, что это за сервис, в котором была нужда использовать вархендлы?
@JavaAverageBadCoder
3 ай бұрын
@@nikitanovosad9937 с метриками связано(+ лютый дроч на производительность кода), что конкретно в проекте это решает я не знаю, я слабоват для понимания что там и зачем, опытные коллеги делали. Просто видел что используется
Напишу, что крутой доклад, пусть остальные думают, что я все понял и умнее их 😂 Upd. А если серьёзно, то видимо мало кто понял, так как комментариев меньше 0.5 процента от просмотров
@user-md2fk3jj1e
3 ай бұрын
кто захотел тот понял ;) единственное, что автор мог доразжевать, что тк в примере с пандой и котом только одна переменная в каждом потоке, то фактическое поведение равноценно даже opaque семантике (на мой взгляд). В общем opaque не дает ничего, acq-rel упорядоченность записи внутри одного потока, volatile упорядоченность записи на уровне всех потоков