Секреты Concurrency: от процессора до атомиков в Go | Полное руководство

Материалы из видео -
Курсы по программированию -
В этом видео мы шаг за шагом разбираем секреты Concurrency в Go - от работы процессора и кэшей до атомарных операций и теории консенсуса. Начнём с истории вычислительных систем - от пакетной и однозадачной обработки до появления многозадачных и многопроцессорных систем, на фоне которых закон Мура и рост числа ядер изменили подход к проектированию программ. Переходим к базовой теории операционных систем, обсуждаем различия между CPU bound и IO bound задачами, показываем реальные демонстрации производительности. Далее исследуем, почему возникают data race, как работают протоколы когерентности кэшей MESI, и какие существуют многопоточные инструкции на уровне процессора. На ассемблере Go показываем, как реализовать многопоточный Add, а затем поднимаемся к уровню атомиков (atomic), включая операцию CompareAndSwap (CAS) и её роль в консенсусе. Разбираем ускорение матричных вычислений с атомиками, закон Амдала, cache contention, и завершаем анализом модели памяти в Go. Telegram:
VK: https://vk.com/igoroutine
Instagram:   / igoroutine   YouTube:    / @igoroutine   Таймкоды: 00:00:00 - Введение 00:00:26 - Мотивация 00:00:36 - История. Batch Processing (пакетная обработка) 00:02:13 - История. Single-task Systems (однозадачные системы) 00:03:42 - История. Multitasking Systems (многозадачные системы) 00:05:17 - Закон Мура (Moore's law) 00:10:46 - Multiprocessor/multicore systems 00:16:35 - Немного теории из операционных систем 00:21:01 - Виды задач. CPU bound задачи 00:22:01 - Виды задач. IO bound задачи 00:24:38 - CPU bound задача (DEMO) 00:26:20 - Кэши у ядер. Почему возникает data race 00:30:12 - Протоколы когерентности кэшей. MESI 00:32:50 - Платформенные многопоточные инструкции 00:35:13 - Реализация многопоточного Add на ассемблере Go (DEMO) 00:38:55 - Почему не сделать многопоточные инструкции по умолчанию 00:40:14 - Как повысить уровень абстракции для программистов 00:41:31 - Атомики (atomic) в Go (DEMO) 00:48:46 - Операция CompareAndSwap (CAS). Консенсус. Теория 01:00:13 - Ускорение сложения матриц с использованием атомиков (DEMO) 01:08:37 - Дополнительный материал 01:08:48 - Почему получился небольшой прирост. Закон Амдала 01:14:21 - Пример почему нельзя закрыться абстракциями 01:17:14 - Пример Cache Contention (DEMO) 01:22:19 - Особенности работы с памятью 01:22:56 - Выводы 01:24:35 - Финал

Смотрите также