Обзор конкурентности в Go: отличие от параллелизма, гарутины, планировщик и синхронизация потоков.
Key Takeaways
- Go предоставляет удобный и эффективный инструмент для конкурентного программирования — гарутины.
- Конкурентность и параллелизм — разные концепции, которые важно различать при проектировании приложений.
- Планировщик Go и компилятор совместно обеспечивают эффективное переключение контекста без явного вмешательства разработчика.
- Синхронизация и безопасный обмен данными между гарутинами — ключевые аспекты для предотвращения ошибок в конкурентных программах.
- Использование встроенных примитивов Go упрощает создание надежных многозадачных приложений.
Summary
- Go — язык, созданный для эффективных конкурентных и параллельных вычислений на многоядерных процессорах.
- Различие между конкурентностью (логический уровень) и параллелизмом (физический уровень) с примерами из жизни.
- Пояснение, как работает многозадачность на одном ядре с переключением между задачами.
- В Go вместо потоков используются легковесные гарутины, которые управляются планировщиком языка, а не ОС.
- Асинхронность в Go реализуется через ключевое слово go без необходимости менять тело функции.
- Механизмы переключения контекста: кооперативный и вытесняющий подходы, в Go используется смешанный метод.
- Компилятор Go автоматически расставляет точки переключения контекста в местах блокировок и системных вызовов.
- Обзор синхронизации потоков и гарутин, примеры с игровым сервером и взаимодействием между игроками.
- Использование каналов для безопасного обмена данными между гарутинами и предотвращения гонок данных.
- Примитивы синхронизации в Go: WaitGroup, атомарные операции и их применение для управления конкурентным доступом.
Chapters
- 00:00Введение в конкурентность и параллелизм в Go
- 01:57Пример с готовкой: аналогия конкурентности
- 03:47Гарутины: легковесные потоки в Go
- 05:35Многозадачность: кооперативный и вытесняющий подходы
- 07:22Автоматическое переключение контекста и роль компилятора
- 09:22Синхронизация потоков и взаимодействие гарутин
- 11:35Примитивы синхронизации: WaitGroup и атомарные операции





![МАТЕМАТИЧЕСКИЙ КЛУБ [переозвучка] — Transcript](https://i.ytimg.com/vi/ShORp6kItf4/maxresdefault.jpg)





