Открыто

Concurrency in Go [Тариф Стандарт] [Balun.Courses] [Владимир Балун]

Тема в разделе "Курсы по администрированию", создана пользователем Топикстартер, 18 июл 2026.

Список пока что пуст. Запишитесь первым!

  1. 18 июл 2026
    #1
    Топикстартер
    Топикстартер Член клуба

    Складчина: Concurrency in Go [Тариф Стандарт] [Balun.Courses] [Владимир Балун]

    Screenshot_1.png

    Глубоко изучишь Concurrency в Go, попрактикуешься на реальных задачах, с которыми сталкивались IT-компании и разработаешь In-memory key-value базу данных с асинхронной репликацией.

    Кому подойдет
    • Golang-разработчики (от уровня Middle / Senior)
    • Switcher'ы из backend-стека (Ruby / Java / PHP / C++ / Python / и др.)
    С чем поможет курс:
    1. Изучить тонкости многопоточного программирования на Go для личного развития, роста в грейде или после switch’a
    2. Получить опыт HighLoad-разработки для резюме, если на текущем проекте приходится работать на скучных CRUD’ах
    3. Быстро разобрать лучшие практики и антипаттерны сoncurrency, если попали в высоконагруженный инфраструктурный проект
    4. Систематизировать знания, заполнить пробелы и перестать путаться в базовых концепциях
    Собрали всю «подкапотную» concurrency в Go в одном месте
    • Внутреннее устройство горутин и планировщика Go
    • Подводные камни контекстов и барьеров памяти
    • Внутреннее устройство каналов, паттерны их использования и реализация
    • Паттерны конкуретных вычислений и live coding worker pool, синхронизатора кэша, scheduler и batcher
    • Примитивы синхронизации и как их реализовать
    • Алгоритмы синхронизации и lock-free структуры данных
    И все это на примере скзвозного проекта
    Научишься писать параллельный код и работать с ним — в конце у тебя будет своя in-memory key-value база данных с асинхронной репликацией

    Программа
    1. Основы исполнения программного кода
    2. Горутины и планировщик Go
    3. Примитивы синхронизации: часть 1
    4. Примитивы синхронизации: часть 2
    5. Каналы и их внутреннее устройство
    6. Паттерны использования каналов
    7. Контексты и барьеры памяти
    8. Алгоритмы синхронизации и lock-free структуры данных
    9. Паттерны конкурентных вычислений
    10. Практическое использование конкурентных вычислений
    Основы исполнения программного кода

    Виртуальная память
    • MMU
    • TLB
    • Swapping
    • Закон Мура
    • Прерывания
    • Векторизация
    • Тракт данных
    • Hyper-threading
    • Context switching
    • Процессы и потоки
    • Pipeline процессора
    • Process memory layout
    • Concurrency vs parallelism
    • Когерентность кэшей (MESI)
    • Примитивное устройство процессора и шина
    • Кооперативная и вытесняющая многозадачность
    • Сопрограммы – корутины, горутины, файберы, green threads
    Результат:
    понимаешь, как выполняется код в рамках архитектуры компьютера и операционной системы
    понимаешь различные способы параллельного исполнения команд на уровне процессора

    Домашнее задание:
    спроектировать архитектуру, реализовать основные слои будущей базы данных, а также написать примитивный парсер для языка запросов

    Горутины и планировщик Go

    Внутреннее устройство горутины
    • Context switching горутин
    • Контекст и состояние горутины
    • Расширение стэка (contiguous и segmented)
    • Паники с горутинами
    Внутреннее устройство планировщика Go
    • Sysmon
    • Handoff
    • Netpoller
    • LRQ и GRQ
    • Asynchronous preemption
    • Work sharing и work stealing
    • Внутреннее устройство очередей
    • Глобальная и локальные очереди
    • runtime.Goshed() и runtime.Goexit()
    • runtime.LockOSThread()
    • GMP модель
    Результат:
    глубоко разбираешься во внутреннем устройстве горутин и планировщика Go, а также начинаешь понимать, как устроено конкурентное выполнение кода в Go

    Домашнее задание:
    продолжаем реализовывать основные слои базы данных и примитивный парсер для языка запросов

    Примитивы синхронизации: часть 1

    Примитивы синхронизации
    • sync.WaitGroup
    • sync.Mutex
    • sync.Once
    Проблемы конкурентного программирования
    • deadlock
    • livelock
    • data race
    • starvation
    • инверсия приоритетов
    Распространенные ошибки
    • Локальные мьютексы
    • Копирование примитивов синхронизации
    • Некорректное использование defer с мьютексами
    • Неправильное проектирование синхронизированной структуры данных
    • Рекурсивная блокировка
    Wait queue
    • Normal / starvation mode
    • Устройство мьютексов в Golang
    • Реализация синхронизированного синглтона
    • Go race detector
    • Диаграммы Холта
    Результат:
    понимаешь, как синхронизировать конкурентный код при помощи примитивов синхронизации, а также знакомишься с основными проблемами проектирования и программирования конкурентных программ

    Домашнее задание:
    реализовать TCP сервер и CLI клиент для базы данных, а также придумать протокол, по которому приложения будут взаимодействовать между собой по сети

    Примитивы синхронизации: часть 2

    Примитивы синхронизации
    • sync.RWMutex
    • sync.Map
    • sync.Cond
    • sync.Pool
    • Атомики
    Реализации примитивов синхронизации
    • Реализация spin lock
    • Реализация ticket lock
    • Реализация мьютекса Петерсона
    • Реализация примитивного мьютекса
    • Реализация recursive mutex
    • Реализация timed mutex
    • Реализация rw mutex
    • Реализация семафора
    • Реализация pool
    • Реализация once
    CAS паттерны
    • True sharing
    • Busy waiting
    • False sharing
    • Spurious wakeup
    • Cache contention
    • Внутреннее устройство sync.Map
    • Внутреннее устройство sync.Pool
    • Внутреннее устройство sync.Mutex
    • Внутреннее устройство мьютексов ядра Linux
    Результат:
    знакомишься с дополнительными примитивами синхронизации и знаешь, как писать свои, в случае необходимости

    Домашнее задание:
    продолжаем реализовывать TCP и CLI клиент для базы данных

    Каналы и их внутреннее устройство

    Каналы в Golang
    • Однонаправленные каналы
    • Правильное закрытие каналов
    • Внутреннее устройство каналов
    • Приоритизация case-ов в select-e
    • Ошибки неправильного использования каналов
    • Буферизованные и небуферизованные каналы
    • Неблокирующие запись и чтение с каналами
    • Операторы break и continue с select-ом
    • Share memory by communicating
    • Проверка канала на закрытие
    • Копирование каналов
    • Deadlock с каналами
    • Сравнение каналов
    • Каналы каналов
    • Утечки горутин
    • Nil каналы
    Примеры использования каналов
    • Коммуникация между горутинами
    • Signal и broadcast на каналах
    • Gracefull Shutdown на каналах
    • Producer and consumer
    Результат:
    разбираешься во внутреннем устройстве каналов и понимаешь, зачем они нужны в Go, а также знаешь где и как их использовать на практике

    Домашнее задание:
    реализовать WAL (Write-Ahead Log) для базы данных, а также механизм восстановления данных из WAL после рестарта базы данных

    Паттерны использования каналов
    • Bridge
    • Pipeline
    • Generator
    • Or channel
    • Transformer
    • Moving later
    • Done channel
    • Or-done channel
    • Promise и Future
    • Fan-In, Fan-Out и Tee
    • Gracefull shutdown на каналах
    • Рефлексия при работе с каналами
    • Реализация Error group на каналах
    • Реализация Rate limiter на каналах
    • Реализация Single flight на каналах
    • Реализация Semaphore на каналах
    • Реализация Barrier на каналах
    • Реализация Promise на каналах
    • Реализация Future на каналах
    Работа со временем
    • time.Ticker
    • time.Timer
    • time.After() и time.Tick()
    • Выполнение запроса с таймаутом
    Результат:
    понимаешь, что каналы – мощнейший инструмент внутри Go, с помощью которого можно делать огромное количество интересных вещей, а также умеешь все эти знания применять на практике

    Домашнее задание:
    продолжаем реализовывать WAL (Write-Ahead Log)

    Контексты и барьеры памяти

    Контексты
    • context.TODO()
    • context.Background()
    • context.WithCancel()
    • context.WithCancelCause()
    • context.WithoutCancel()
    • context.WithDeadline()
    • context.WithDeadlineCause()
    • context.WithTimeout()
    • context.WithTimeoutCause()
    • context.WithValue()
    Внутреннее устройство контекстов
    • Антипаттерны использования контекстов
    • Утечки горутин при работе с контекстами
    • Собственная реализация context.WithTimeout()
    • Gracefull shutdown на контекстах
    • Memory reordering
    • Error group
    Барьеры памяти
    • полный барьер
    • барьер чтения
    • барьер записи
    • acquire барьер
    • release барьер
    Результат:
    детально разбираешься в контекстах и понимаешь, как правильно их использовать в GO на практике, а также дополнительно понимаешь, что делать с периодическим переупорядочиванием инструкций со стороны процессора или компилятора в конкурентных программах

    Домашнее задание:
    продолжаем реализовывать WAL (Write-Ahead Log)

    Алгоритмы синхронизации и lock-free структуры данных

    Шардирование структур данных
    • RCU (Read Copy Update)
    Алгоритмы синхронизации
    • грубая
    • тонкая
    • оптимистичная
    • неблокирующая
    Lock-free структуры данных
    • Стэк Трайбера
    • Очередь Майкла и Скотта
    ABA проблема
    • hazard pointers
    • tagged pointers
    Результат:
    знаешь продвинутые алгоритмы синхронизации структур данных, а также понимаешь, как писать конкурентный код без блокировок (lock-free)

    Домашнее задание:
    реализовать асинхронную репликацию с одним ведущим узлом (master-slave) для базы данных (реплицироваться будут сегменты WAL-a)

    Паттерны конкурентных вычислений

    Изоляция транзакций в базах данных
    • 2PL подход
    • MVCC подход
    • Сериализуемость
    Закон Амдала
    • Акторная модель
    Результат:
    знаешь паттерны конкурентных вычислений, понимаешь архитектуру web-серверов, а также разбираешься в 2PL и MVCC (благодаря этому понимаешь, как работает изоляция транзакций в базах данных)

    Домашнее задание:
    продолжаем реализовывать асинхронную репликацию с одним ведущим узлом (master-slave)

    Практическое использование конкурентных вычислений

    Live-coding:
    • реализация worker pool
    • реализация синхронизатора кэша
    • реализация scheduler
    • реализация batcher
    Результат:
    ты самостоятельно прорешал(-а) реальные задачи, с которыми сталкивались современные IT-компании, и полностью готов(-а) применять все знания на практике в настоящих проектах
    ты готов(-а) к решению задач на собеседовании по Golang

    Домашнее задание:
    продолжаем реализовывать асинхронную репликацию с одним ведущим узлом (master-slave)

    В этом курсе собрана вся информация по Сoncurrency в Go
    Все темы можно найти по кусочкам, прочитав десятки книг по Golang, но это долго и неэффективно. Мы собрали весь контент в одном месте на понятном языке и с практикой

    Тариф Стандарт
    Стоимость 55700 руб.
    Скрытая ссылка
     
    Последнее редактирование модератором: 19 июл 2026
    2 пользователям это понравилось.
  2. Последние события

    1. Money Maker LTD
      Money Maker LTD не участвует в складчине.
      22 июл 2026
    2. Money Maker LTD
      Money Maker LTD участвует в складчине.
      22 июл 2026
    3. skladchik.com
      Нужен организатор складчины.
      21 июл 2026
    4. skladchik.com
      Назначен организатор складчины.
      18 июл 2026

    Последние важные события

    1. skladchik.com
      Нужен организатор складчины.
      21 июл 2026
    2. skladchik.com
      Назначен организатор складчины.
      18 июл 2026