Бесплатные материалы

Секреты Concurrency: от процессора до атомиков в Go

На этом открытом уроке мы разберем многопоточность от «А» до «Я» — от устройства транзисторов и законов физики до практического применения атомиков в Go для написания высокопроизводительного кода.

В этом уроке:

  • История и эволюция: путь от пакетной обработки задач до современных многоядерных систем и вытесняющей многозадачности.
  • Железо под капотом: почему одно ядро больше не растет в частоте, как работают протоколы когерентности кэша (MESI) и зачем процессору нужны многопоточные инструкции.
  • Атомики в Go: глубокий разбор пакета sync/atomic, реализация собственных атомиков на ассемблере и понимание операции Compare-and-Swap (CAS).
  • Проблемы синхронизации: что такое Data Race на уровне кэш-линий процессора и как эвристики компилятора могут замедлить ваш код в 4 раза.
  • Параллелизм на практике: пишем и бенчмаркаем параллельное сложение матриц, разбираем закон Амдала и ищем "золотую середину" в количестве потоков.
  • Текущие абстракции: как ложные разделения (False Sharing) и кэш-контеншн влияют на реальные бизнес-приложения и как от этого защититься с помощью падинга.

В итоге у тебя будет фундаментальное понимание того, как на самом деле исполняется конкурентный код: ты узнаешь, за что мы платим при распараллеливании задач и как использовать ресурсы процессора максимально эффективно, избегая типичных ловушек абстракций

Дополнительные материалы к видео

Исходный код
https://github.com/IgorWalther/videos/blob/master/0013_concurrency/003_matrix/main_test.go#L59
Ссылка на видео про оси
https://t.me/igoroutine/89?comment=360
Ссылка на видео про память
https://t.me/igoroutine/89?comment=295
Ссылка на видео про процессора
https://t.me/igoroutine/89?comment=294
Ссылка на видео про дженерики
https://t.me/igoroutine/89?comment=321
Ссылка на видео про SIMD
https://t.me/igoroutine/72
SMT Hyperthreading
https://en.wikipedia.org/wiki/Hyper-threading
Материал про false sharing
https://habr.com/ru/companies/intel/articles/143446/
Продвинутый Go Concurrency