Size: a a a

Конференция C++ Russia

2021 July 15

AV

Alexey Veselovsky in Конференция C++ Russia
источник

AV

Alexey Veselovsky in Конференция C++ Russia
!!!1
источник

AV

Alexey Veselovsky in Конференция C++ Russia
live NOW!
источник

K

Kirill in Конференция C++ Russia
через что на армах эмулируется cas?
источник

NK

Nickolay Kononov in Конференция C++ Russia
Load Linked Store Conditional
источник

K

Kirill in Конференция C++ Russia
спасибо
источник

NK

Nickolay Kononov in Конференция C++ Russia
https://en.wikipedia.org/wiki/Load-link/store-conditional по идее идея такая, что ставится бит в кеш линию и если другой поток эту кеш линию трогает то он просто сбрасывается и этот кас не проходит, поэтому compare_exchange_weak даст false (как и написано на цппреф), хотя значение могло не поменяться (false sharing, поменяли другую ячейку в этой же кеш линии), кажется это решает АБА, если пользоваться cas_weak
источник

*

*cyberzx in Конференция C++ Russia
блин. пропустил :(
источник

*

*cyberzx in Конференция C++ Russia
Интересная тема. Но я всегда думал, что lock-free не добавляет производительности, а лишь гарантирует, что не будет блокировок.
И вот мне всегда было интересно, а в каких областях нам нужна эта гарантия?
Которая, кстати, зачастую даётся за счёт производительности. Я подозреваю, что это как-то связанно с RT и soft RT задачами.
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Это звучит как Wait-free
источник

*

*cyberzx in Конференция C++ Russia
Ну вот мне кажется, что все эти категории wait-free/lock-free зародились именно в real-time системах
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Я бы ещё вспомнил про дедлоки, инверсию приоритетов, старвейшен и многие другие проблемы с блокировками. Часто lock-free — это способ ухода от таких проблем
источник

AF

Alexey Fyodorov in Конференция C++ Russia
Например, в классической задаче об обедающих философах при реализации с упорядоченными блокировками и определенных параметрах системы возникают ситуация, когда одно ядро загружено на 100 процентов, второе на 40, третье на 10, а остальные практически стоят и курят
источник

*

*cyberzx in Конференция C++ Russia
Да, вот эту тему хотелось бы тоже раскрыть в следующий раз.
Мне кажется слишком много внимания уделили перфомансу и сложности реализации. Но хочется ещё позитива )
источник

AF

Alexey Fyodorov in Конференция C++ Russia
И при замене алгоритма мы внезапно можем сильнее и равномернее утилизировать все ядра, что даёт performance boost
источник

DK

Dmitry Kazakov in Конференция C++ Russia
При количестве ядер больше двух локфри алгоритмы серьезный выигрыш производительности дают. Мы в Крите их очень активно используем. Прям очень-очень.
источник

*

*cyberzx in Конференция C++ Russia
Ну вот интересен кокнертный кейс применения.
Я на многоядерной системе как-то игрался с очередями сообщений MPSC (multiple producer - single consumer) и локфри лист был медленее обычного + std::shared_lock
источник

DK

Dmitry Kazakov in Конференция C++ Russia
Можете в Крите посмотреть. Мы опенсорс :)
источник

AV

Alexey Veselovsky in Конференция C++ Russia
А кто такая крита?
источник

*

*cyberzx in Конференция C++ Russia
https://krita.org/en/
вот это?
источник