Создатели Go ОШИБЛИСЬ, создавая ЭТОТ CONCURRENCY примитив | sync.Once
Курсы по программированию - https://clck.ru/3MPPRK В этом видео ты узнаешь, почему стандартная реализация примитива sync.Once в Go выглядит простой, но скрывает важные нюансы корректности исполнения. Мы разберём, как и в каких случаях применяется sync.Once, почему попытки самостоятельно его реализовать часто приводят к ошибкам, и что такое линеаризуемость — ключевое свойство корректного многопоточного исполнения. Я покажу пример некорректной реализации sync.Once, объясню, в чём именно заключается её ошибка, и как нарушение порядка завершения функции приводит к неконсистентному поведению. Также ты узнаешь, как правильно проверять реализацию примитивов синхронизации с помощью фреймворка для проверки линеаризуемости, который используется в крупных проектах вроде ETCD. Мы визуализируем корректное и некорректное поведение через графы исполнения и посмотрим, как это соотносится со спецификацией, а также разберём корректную реализацию. Кроме того, я расскажу про свой курс The Nature of Concurrency, где мы подробно изучаем многопоточность, примитивы и модели памяти. Telegram: https://t.me/igoroutine VK: https://vk.com/igoroutine Instagram: https://instagram.com/igoroutine YouTube: https://www.youtube.com/@igoroutine Таймкоды: 00:00 - Введение 00:15 - Использование sync.Once 01:16 - Неправильная реализация sync.Once 02:37 - Теория. Почему реализация некорректна? Линеаризуемость 05:40 - Мой курс по многопоточному программированию. The Nature Of Concurrency 05:52 - Проверка на линеаризуемость. Корректная реализация 08:02 - Графическое представление линеаризуемости корректной реализации 08:26 - Исходный код видео 08:34 - Проверка на линеаризуемость. Некорректная реализация 09:02 - Графическое представление линеаризуемости некорректной реализации 09:43 - Разбор корректной реализации 10:38 - Финал
Курсы по программированию - https://clck.ru/3MPPRK В этом видео ты узнаешь, почему стандартная реализация примитива sync.Once в Go выглядит простой, но скрывает важные нюансы корректности исполнения. Мы разберём, как и в каких случаях применяется sync.Once, почему попытки самостоятельно его реализовать часто приводят к ошибкам, и что такое линеаризуемость — ключевое свойство корректного многопоточного исполнения. Я покажу пример некорректной реализации sync.Once, объясню, в чём именно заключается её ошибка, и как нарушение порядка завершения функции приводит к неконсистентному поведению. Также ты узнаешь, как правильно проверять реализацию примитивов синхронизации с помощью фреймворка для проверки линеаризуемости, который используется в крупных проектах вроде ETCD. Мы визуализируем корректное и некорректное поведение через графы исполнения и посмотрим, как это соотносится со спецификацией, а также разберём корректную реализацию. Кроме того, я расскажу про свой курс The Nature of Concurrency, где мы подробно изучаем многопоточность, примитивы и модели памяти. Telegram: https://t.me/igoroutine VK: https://vk.com/igoroutine Instagram: https://instagram.com/igoroutine YouTube: https://www.youtube.com/@igoroutine Таймкоды: 00:00 - Введение 00:15 - Использование sync.Once 01:16 - Неправильная реализация sync.Once 02:37 - Теория. Почему реализация некорректна? Линеаризуемость 05:40 - Мой курс по многопоточному программированию. The Nature Of Concurrency 05:52 - Проверка на линеаризуемость. Корректная реализация 08:02 - Графическое представление линеаризуемости корректной реализации 08:26 - Исходный код видео 08:34 - Проверка на линеаризуемость. Некорректная реализация 09:02 - Графическое представление линеаризуемости некорректной реализации 09:43 - Разбор корректной реализации 10:38 - Финал
