🦥Alex Fails
отлично!
Anonymous
Если забор это l/s/mfence, то это в доку по процу от интела, например. У gcc еще есть хорошая дока на этот счет
Vsevolod
я же кинул ссылку
🐙 Antony
я еще не дочитал до ссылки
Vsevolod
я про статью с картинками
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
MemoryBarrier же (но это макрос, что логично), и MSVCшный volatile
Aidar
Aidar
Aidar
Vitaliy ◀️TriΔng3l▶️
Aidar
Зачем тогда макрос
Vitaliy ◀️TriΔng3l▶️
Я уже не помню, какой там интринсик
Aidar
Ну дык вытащи наружу апи его
Vsevolod
(пожимая плечами) декларация std::atomic<int> foo; никаких барьеров не ставит, а вот операции ставят, об чем, собственно и весь разговор
Aidar
А кто что про определение ваще говорил?
Ioann_
Vitaliy ◀️TriΔng3l▶️
А я за __
Я за то, чтобы подобные вещи были в неймспейсах
Vitaliy ◀️TriΔng3l▶️
В C неймспейсы бы не помешали ещё
Aidar
Ой только давайте без c.net
Aidar
C/cli
Vitaliy ◀️TriΔng3l▶️
Aidar
Да просто это по определению выльется в неподдерживакмое расширение для вижака
Vitaliy ◀️TriΔng3l▶️
Berkus
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
Но можно выключить через /volatile:iso
Berkus
Berkus
Alexander "SonnySlave"
Vitaliy ◀️TriΔng3l▶️
Но на x86 и так всё acquire/release, это чисто барьер для компилятора
Vsevolod
это они из java наверняка подцепили
Vitaliy ◀️TriΔng3l▶️
Не знаю, откуда они это подцепили, но вот такой вот костыль сделали
Berkus
в с++ полностью стандартизованная модель памяти сейчас, так что пользуйтесь
Vitaliy ◀️TriΔng3l▶️
Vitaliy ◀️TriΔng3l▶️
Или нет?
Vitaliy ◀️TriΔng3l▶️
Где-то в твиттере видел, но не помню, в каком компиляторе такое безобразие
🐙 Antony
Berkus
Atomic operations tagged memory_order_relaxed are not synchronization operations; they do not impose an order among concurrent memory accesses.
Berkus
jfyi
Vitaliy ◀️TriΔng3l▶️
А что вас не устраивает?
То, что это C++, а не PHP, а от C++ я ожидаю того, что он будет мне более-менее позволять управлять тем, как будет выполняться код?
Vasily
#book
#books
https://t.me/joinchat/AAAAAE1yUq2Kh6WdPCtjMA
Vasily
https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
🐙 Antony
То, что это C++, а не PHP, а от C++ я ожидаю того, что он будет мне более-менее позволять управлять тем, как будет выполняться код?
Так дебаг же - включены те оптимизации, которые делать легко и которые при этом приносят максимальный профит. Вы разницу relaxed/seq_cst не почуствуете в дебаге, более суровый inlining на O2 намного сильнее ускорит код чем relaxed.
А отлавливать ошибки руками при использовании relaxed - неправильное занятие, есть санитайзеры, они отловят намного лучше. И да, их обычно запускают с -O2, иначе есть шанс что внуки вырастут раньше чем тесты прогонятся :)
🐙 Antony
Но вот если санитайзер действительно запущен на -O0...
🐙 Antony
надо проверить, что даже в дебаге правильно размечаются барьеры и санитайзеры их правильно подхватывают, не смотря на то что инструкции seq_cst
🐙 Antony
У кого есть ARM под рукой и хороший пример, где с seq_cst/acq+rel всё верно работает, а вот с relaxed - плохо?
Vitaliy ◀️TriΔng3l▶️
Ignat
Ставь класс, если обходишься структурами с полем vptr
Vitaliy ◀️TriΔng3l▶️
Идите вы в C++ со своими темплейтами и классами
Vitaliy ◀️TriΔng3l▶️
Ignat
> pro.cxx
🤔🤔🤔
Vitaliy ◀️TriΔng3l▶️
Но вообще, если с виртуальными функциями реально красивее, то почему бы и нет
Vsevolod
и получится gobject
Vsevolod
gobject - это ад, просто ад
Nikita
Vitaliy ◀️TriΔng3l▶️
И лямбд
Вот их действительно не хватает
Vitaliy ◀️TriΔng3l▶️
Только замыкания не нужны
Vitaliy ◀️TriΔng3l▶️
Ну, не лямбд, а static функций внутри функций
Vsevolod
так это в gcc есть
Vitaliy ◀️TriΔng3l▶️
Vsevolod
а в шланге есть blocks
Vsevolod
https://clang.llvm.org/docs/BlockLanguageSpec.html
Vitaliy ◀️TriΔng3l▶️
Блин, красота https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
Vsevolod
я все размышляю, что проще - отрезать себе полжопы или перевести 200 тыщ строк с plain c на c++ :\
Vitaliy ◀️TriΔng3l▶️
А вот значок ссылки из C++/CLI не нужен
Igor
Про модель памяти и барьеры на пальцах - https://davmac.wordpress.com/2018/01/28/understanding-the-c-c-memory-model/
Berkus
Ignat
Berkus