003. Почему C++ atomics именно такие - Егор Деревенец

  Рет қаралды 9,216

Yandex for Developers

Yandex for Developers

8 жыл бұрын

В C++11 появились новые типы данных atomic T, позволяющие выполнять гарантированно атомарные операции с памятью. Для операций с данными новых типов можно указать порядок, в котором они, а также операции до и после них, достигнут глобальной памяти, то есть станут видны другим тредам.
По умолчанию используется порядок sequential consistency: все атомарные операции становятся видны всем тредам в одной и той же последовательности. Они не меняются местами с предшествующими или последующими операциями с памятью в треде, который их выполняет. C++ предоставляет возможность запросить и более слабые гарантии: release, acquire, consume, relaxed memory order.
Я попытаюсь объяснить, почему в C++ действительно нужны пять (а на самом деле шесть) видов гарантий. Я расскажу, откуда они появились, что означают и как код, использующий эти гарантии, компилируется на x86 и Power.

Пікірлер: 15
@user-pg8ry1tm3t
@user-pg8ry1tm3t Ай бұрын
Прекрасное видео!!! Спасибо!!! На пальцах буквально объяснены весьма нужные темы!
@YandexforDevelopers
@YandexforDevelopers Ай бұрын
❤️
@acidelk
@acidelk 3 жыл бұрын
По поводу 7 слайда и out-of-order/speculative execution - они есть и на intel (если я правильно понял серию докладов Александра Титова) kzfaq.info/get/bejne/bcdxaaaF3NTeZ5c.html
@whereispie
@whereispie 2 жыл бұрын
Тяжело воспринимать материал 🥲
@qwertyytrewq3453
@qwertyytrewq3453 Жыл бұрын
Вау "АКАДЕМИЯ"! ... пусть идет родине долг отдавать.
@leksanders8908
@leksanders8908 5 жыл бұрын
Флах, Прохрамма, компилятор Кланх, Хеси-си. При этом заметно как человек старается и усиленно коверкает язык всеми силами силясь изобразить акцент английского языка. Если у него так хорошо развит речевой аппарат и он столько значимости придаёт языковой клоунаде в английском языке, упражняясь в тысячах разнообразных звуках, ударениях, интонациях, распевных, коротких, длительных, а сам не может справиться у себя с одним единственным деревенским прононсом буквы "Г"? Со стороны выглядит как гы-кающая "деревня". Если кто-то скажет, ну и пусть, он просто не придаёт этому значения, ну деревня и деверня, мол не скрывает, что он ставропольское Сель-По, то тогда извините зачем он одел костюмчик? Шёл бы в джинсиках и свиторочке.
@artie5913
@artie5913 5 жыл бұрын
если бы он тратил время на тренировки говорить как всем нравится на русском и английском, то не защитил бы PhD, не попал бы в Яндекс. и пришлось бы не на конфе выступать с интересным докладом, а хейтерские комментарии в ютубчике строчить, разговаривая со своим монитором идеальным городским говором
@wizaral
@wizaral 4 жыл бұрын
Нифига ты токсик
@user-md3nz9hy8z
@user-md3nz9hy8z 4 жыл бұрын
@@artie5913 То что он получил PhD говорит только о том, что его знания сопоставимы со знанием тех кто его тестировал, не больше и не меньше. Но это никоим образом не говорит о том, что они все вместе в чем то не ошибаются. Тем более, что приведенный в видео алгоритм слабо похож на алгоритм Деккера и логически там пурга написана (но это мое личное мнение :). ПС: а то что в gcc баг на баге и багом поганяет давно известный всем "секрет".
@artie5913
@artie5913 4 жыл бұрын
@@user-md3nz9hy8z автор оригинального комментария ничего не пишет о технической части видео. Он просто докопался до говора. На мой взгляд это тупо хейтерский подход. Если бы там была речь о неправильном алгоритме, это было бы совсем другое дело. А насчет PhD - так можно любую вещь обесценить, сказав, что там возможно просто все ошиблись :)
@user-md3nz9hy8z
@user-md3nz9hy8z 4 жыл бұрын
@@artie5913 По поводу "все ошиблись" - как тогда PhD может сравнивать успешность захвата критической части кода уже после завершения потока (join именно блокирует сравнение до завершения потока) и в момент создания другого, когда значения переменных еще не определены? Не говоря о том, что алгоритм Деккера только для 2-х потоков. Зато очень много умных слов сказано. Между знанием и пониманием очень существенная разница.
005. Немного магии для C++14 - Антон Полухин
37:05
Yandex for Developers
Рет қаралды 12 М.
THEY WANTED TO TAKE ALL HIS GOODIES 🍫🥤🍟😂
00:17
OKUNJATA
Рет қаралды 10 МЛН
когда повзрослела // EVA mash
00:40
EVA mash
Рет қаралды 3,4 МЛН
Basic SQL Queries in Oracle
9:27
DataQueen
Рет қаралды 5
Arvid Norberg: The C++ memory model: an intuition
25:37
SwedenCpp
Рет қаралды 15 М.
024.  Модель памяти C++ - Андрей Янковский
40:03
Yandex for Developers
Рет қаралды 51 М.
C++ lectures at MIPT (in Russian). Lecture 13. Atomicity, part 1
1:11:20
Konstantin Vladimirov
Рет қаралды 2,8 М.
Антон Полухин - Незаменимый С++
53:03
C++ User Group
Рет қаралды 39 М.
006.  Многопоточность в С++ - Максим Бусел
41:40
Yandex for Developers
Рет қаралды 18 М.