Concurrency в Go - барьеры памяти | Как устроены атомики под капотом

Sdílet
Vložit
  • čas přidán 15. 06. 2024
  • Курсы по программированию: clck.ru/37iG2b
    Потренироваться проходить собеседования: it-interview.io
    Присоединиться к моему сообществу: boosty.to/vladimir_balun
    Консультации:
    getmentor.dev/mentor/vladimir...
    solvery.io/ru/mentor/vladimir...
    Таймкоды:
    00:00 - Введение
    00:12 - Пример неправильного конкурентного кода
    02:16 - Переупорядочевание инструкций компилятором
    02:58 - Переупорядочевание инструкций процессором
    03:40 - Пример переупорядочевания инструкций
    04:32 - Основные операции с памятью
    04:46 - Логические барьеры памяти
    05:19 - Полный барьер (full barrier)
    06:15 - Барьер записи (write barrier)
    06:29 - Барьер чтения (read barrier)
    07:15 - Acquire barrier
    07:31 - Release barrier
    07:42 - Внутреннее устройство мьютексов
    08:18 - Оптимизации
    08:53 - Пример правильного конкурентного кода
    11:01 - Заключение
    VK: vladimir_balun_program...
    Telegram: t.me/vladimir_balun_programming
    Instagram: / vladimir_balun_program...
    CZcams: / @vladimir_balun_progra...
    YandexZen: zen.yandex.ru/id/623b6c964da9...
    RuTube: rutube.ru/channel/25079714/
    Concurrency в Go. Golang. Конкурентное программирование. Параллельное программирование. Барьеры памяти. Атомики в Go. Мьютексы в Go.
    #айти #программирование #golang #concurrency

Komentáře • 29

  • @alex6161
    @alex6161 Před 6 měsíci +7

    Здорово, ты первый такое рассказываешь.

  • @talentedandmotivated6629
    @talentedandmotivated6629 Před 6 měsíci +2

    Базировано, как всегда!

  • @user-ny2tl4qy3m
    @user-ny2tl4qy3m Před 5 měsíci +1

    спасибо за ваши ролики! и спасибо за участие в собеседовании у Николая Тулзова: были интересные вопросы и задания, я много узнал, много над чем задумался

  • @lobiritus1512
    @lobiritus1512 Před 6 měsíci +1

    Очень круто) спасибо за такое обьяснение

  • @justnik8
    @justnik8 Před 4 měsíci +1

    Годный и полезный контент!

  • @stassmith8593
    @stassmith8593 Před 3 měsíci

    Владимир, спасибо большое, по go мало информации в русскоязычном сегменте, причем с хорошим объяснением, еще раз спасибо! Собираюсь к вам на system design и очень жду бд для разработчиков, который постоянно в разработке)

  • @_uncle_bob_
    @_uncle_bob_ Před 6 měsíci

    Годный контент, ищобы про memory model у голанга в целом видосик

  • @sinkevich.m.m
    @sinkevich.m.m Před 6 měsíci

    Спасибо за видео! Подскажи что почитать на эту тему!? Чувствую что не хватает мат. части.

    • @vladimir_balun_programming
      @vladimir_balun_programming  Před 6 měsíci

      Рекомендую различные статьи и видео по барьерам памяти в C++

  • @qrthack3233
    @qrthack3233 Před 5 měsíci

    Скажи пожалуйста, стоит ли изучать backend программирование? не заменит ли эту отрасль нейронные сети?

  • @s1ovac308
    @s1ovac308 Před 4 měsíci

    Вов, расскажи еще пожалуйста про атомики, пока для меня это как черный ящик) Желательно не привязываясь к ЯП

  • @mnkboy
    @mnkboy Před 6 měsíci +1

    Пожалуйста, если вы не возражаете, не могли бы вы добавить субтитры на английском или испанском языке? Я из Мексики, и ваши видео очень хорошие, но автоматический переводчик CZcams заменяет некоторые слова. Я бы очень признателен за это. Привет ! :P

  • @user-pw2tk8li8p
    @user-pw2tk8li8p Před 5 měsíci

    Было бы также неплохо, если бы был разобран момент с видами барьеров, которые в го работают. Допустим, в ходе моих экспериментов я заметил, что LoadLoad барьер в го не всегда тригерится, то есть в таком случае компел/процессор (скорее даже проц, потому что такое поведение я встречал в армах) могут реордерить инструкции, ну и получается такое непредсказуемое поведение.

    • @norrrrrd
      @norrrrrd Před 27 dny

      Тут, я думаю, Вован немного не точен, компилятор в таких штуках непричем, это фокусы процессора и процессорного кэша.
      Упрощенно, когда есть инструкции вида A = 1; B = 1 и при этом B находится в кэше ядра процессора, а A не находится и его нужно прочитать из памяти (или из кэша другого ядра) в процессорный кэш, ядро для лучшей производительности выполняет B = 1 в то время, пока A читается из памяти, что и приводит к нарушению порядка инструкций. Но про проц он тоже сказал.

  • @mosheniknebrattrybky
    @mosheniknebrattrybky Před 4 měsíci

    Атомики то как работают ?

  • @user-ci2wp9bc9q
    @user-ci2wp9bc9q Před 3 měsíci +1

    Можно так же делать atomic для строки? Или это будет плохо и почему?

    • @vladimir_balun_programming
      @vladimir_balun_programming  Před 3 měsíci

      Атомик с указателем на строку можно, но нужно смотреть конкретные кейсы

  • @fedordostoevskiy4209
    @fedordostoevskiy4209 Před 4 měsíci

    Не знаю go, интересно можно посмотреть assembled код на нем?

    • @norrrrrd
      @norrrrrd Před 27 dny

      Можно, go tool objdump -S

  • @quansumonner
    @quansumonner Před 5 měsíci

    Привет, я бы хотел услышать мнение уже опытных разрабов:)
    Как вы относитесь к накрутки опыта в разработке?
    Если другие варианты?
    У меня сейчас 2 резюме и единственное, что в них различается, это количество опыта, но на одном 2 отлика (о опыта), а на другом 27 (1.7 опыта).
    Надеюсь, что вы отлично проводите время.

  • @jordenskraften8273
    @jordenskraften8273 Před 6 měsíci +2

    как компилятор и процессор обманывают программиста. Жулики