[19:38:39] <ada_ru> (FROL256) Коллеги, просветите меня пожалуйста на счёт https://ru.cppreference.com/w/cpp/atomic/memory_order
Извините пж. за вопрос, я понимаю что С++ говно )
[19:38:42] <ada_ru> (FROL256) Вопрос у меня составной:
[19:38:49] <ada_ru> (FROL256) 1) Зачем вообще это нужно?
[19:38:58] <ada_ru> (FROL256) То есть я понимаю что такое атомики, и читая описание, я всегда использовал атомики полагаясь на memory_order_relaxed.
Никаких других предположений в алгоритмах не делал кроме того что сама операция атомарна.
Мне совершенно непонятны примеры про какие-то последовательности изменений по разному видимые в разных потоках ... зачем это вообще.
[19:39:04] <ada_ru> (FROL256) 2) Есть ли/планируется ли это в Аде? Может есть какие-то аналоги попроще.
[19:39:09] <ada_ru> (FROL256) 3) Хотелось бы немного пояснений по поводу реализации.
[19:39:17] <ada_ru> (FROL256) Я вроде-бы-понимаю что такое fence. С точки зрения реализации, вот я записал в L1 данные. Вызвал "fence w,r".
Опа, данные сбросились в L2 и теперь я могу прочитать их в других потоках (ну и видимо в других потоках инвалидировались соответствующие записи в L1).
Хорошо, ну вроде бы больше ничего и не нужно. Поправьте если ошибаюсь.
[19:39:25] <ada_ru> (FROL256) Ну это опять же к примеру.
Понятно что архитектура ЭВМ может быть сильно другая.
Мне просто хотелось бы понять на простом примере для начала, что скрывается за всем этим.
[19:39:37] <ada_ru> (FROL256) может есть какие-то примеры с картинками для самых маленьких )
[19:41:56] <ada_ru> (FROL256) спс! )
[20:39:56] <ada_ru> (I_vlxy_I) отвечает (FROL256) на <Коллеги, просветите …>
https://habr.com/ru/post/197520/
[22:40:24] <ada_ru> (FROL256) да, я вот эту статью как раз читал. не то что бы там всё как-то запутанно ... мне скорее просто непонятно зачем это вообще нужно
[22:40:35] <ada_ru> (FROL256) и как это ложится на железо
[22:42:53] <ada_ru> (FROL256) то есть очень трудно представить себе ситуацию когда вообще нужно смешивать атомарный и неатомарный доступ
[22:42:56] <ada_ru> (FROL256) на мой взгляд
[23:33:27] <ada_ru> (Максим) наверное, например, когда ты атомарной операцией защищаешь сложный объект. Ну то есть, у тебя есть атомарный флаг, который говорит, что всё, можно читать, скажем массив из чисел, массив ты не можешь читать атомарно
[23:34:10] <ada_ru> (Максим) Что касется Ады, там кажется все операции с атомарными данными делают барьер
[23:45:32] <ada_ru> (Максим) Т.е. изначально был "нормальный" атомик. А потом вместо определения модели памяти они тупо обязали делать барьер. Как я это себе понимаю
[23:47:37] <ada_ru> (Максим) Я в это время писал свой lockfree и афигел, когда после смены компилятора он стал тормозной
[23:50:27] <ada_ru> (I_vlxy_I) эхъ.. в стандарт бы Ады бы это всё..