Примитивы синхронизации - многопоточность микро- и макроуровней на примерах из реального мира.
Автор: Кибер Коммуна
Загружено: 2025-07-26
Просмотров: 209
Описание:
00:00 Вступление - тема concurrency и multi-threading - маленькие и большие миры "многопоточки".
01:05 Основные понятия - гонка, race condition, самостоятельный рисерч.
01:37 Мир распределенных систем - "мико-" и "макро-" уровни и их законы.
02:51 Забагованные примеры, которые я буду чинить.
03:20 SpinLock aka Mutex - зачем жечь процессор?
04:00 Роль планировщика в высокоуровневых примитивах типа `sync.Mutex{}` на Голенге - засыпание, засыпание и еще раз засыпание.
07:08 Планировщик и механизм "засыпания" в мире блокировок: `futex` Линукса.
07:58 Первый пример - `sync.Mutex` баги.
11:41 Исправление бага.
12:11 Еще один "типичный" способ сделать похожую ошибку - синхронизироваться по копиям одного и того же `sync.Mutex`.
13:57 Исправление.
14:20 Выводы. Исторические примеры из `CPython` с его `GIL`.
17:30 Оптимизации в зависимости от режима работы - `sync.RWMutex`.
19:09 Важность четкого понимания характера нагрузки для проектирования распределенных систем.
20:12 Следующий пример - важность порядка блокирования.
22:28 Практические проблемы с поиском таких багов - неуловимые "гонки данных", которые невозможно воспроивести. Понятие о deadlock и livelock, аналогии с deadlock detector из SQL и `-race`-ключа рантайма Го.
23:55 Понятие о "прогрессе" в распределенной системе.
25:45 Локализация проблемы: порядок взятия блокировок имеет значение.
27:51 Решение. Выводы. Примеры из жизни.
Начинаю новую серию стримов о важном - о многопоточке и распределенных системах, которые удивительным образом оказываются подчинены одним и тем же законам: малое отражается в великом и великое - в малом.
Речь пойдет про "классические" мьютексы разного рода, с примерами часто встречающихся ошибок и их исправлениями, обговариванием всех тонкостей и аспектов. Это - первый стрим из своей серии, поэтому ждите продолжение.
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: