Working with Concurrency in Go (Golang) - DubCourse
Skip to content
IT Курсы Golang

Работа с конкурентностью в Go (Golang) (6/2024)

Working with Concurrency in Go (Golang)

Скачать Working with Concurrency in Go (Golang) вы можете на нашем сайте. Мы предлагаем бесплатные IT-курсы с переводом на русский по направлениям: Веб-разработка, ML/AI, DevOps, Mobile и многим другим, которые помогут в вашей IT карьере.

Длительность 9h 45m
📦
Размер 2.53 GB
📅
Добавлено 25.12.2025

О курсе

Чему вы научитесь

  1. Узнаете о различных способах, которыми Go упрощает работу с конкурентным программированием
  2. Поймёте, как работает конкурентность, её преимущества и подводные камни
  3. Изучите работу WaitGroup, Mutex и каналов
  4. Освоите конкурентность на практике, решая классические задачи информатики и создавая реальный проект

Требования

  1. Хорошее понимание языка программирования Go
  2. Компьютер на Windows, macOS или Linux с подключением к интернету

Описание

Go, часто называемый Golang, хорошо известен тем, что делает работу с конкурентностью удивительно простой. Чтобы запустить функцию конкурентно, достаточно добавить слово «go» перед её вызовом, и она радостно выполняется в фоновом режиме как горутина (GoRoutine). Встроенный планировщик Go заботится о том, чтобы каждая горутина запускалась когда нужно и максимально эффективно.

Однако это не означает, что работа с конкурентностью в Go проста — потокобезопасное программирование требует тщательного планирования, и, что важнее всего, разработчики должны иметь абсолютно твёрдое понимание того, как Go работает с конкурентностью.

В стандартной библиотеке Go предлагает несколько способов работы с конкурентно выполняющимися частями программы: sync.WaitGroup — позволяет ожидать завершения задач; sync.Mutex — позволяет блокировать и разблокировать ресурсы, чтобы две горутины не могли одновременно обращаться к одному участку памяти; и, наконец, каналы (Channels) — позволяют горутинам отправлять и получать данные друг от друга.

Подход Go к конкурентности достаточно прямолинеен и в целом выражается мантрой: «Не общайтесь через разделяемую память; вместо этого разделяйте память через общение». Каналы — это средство, с помощью которого мы обычно разделяем память через общение.

В этом курсе мы подробно рассмотрим использование WaitGroup, Mutex и каналов. Также мы разберём проблемы, присущие конкурентности, включая преждевременное завершение программы и состояния гонки (race conditions). Сначала мы получим хорошее понимание работы этих механизмов, решая классические задачи информатики: «Обедающие философы», «Производитель-потребитель» и «Спящий парикмахер». Эти задачи стали классикой не просто так: они заставляют разработчика искать лучший подход к работе с кодом, выполняющимся конкурентно или параллельно.

В завершение курса мы решим более «реальную» задачу: регистрация клиента в подписочном сервисе с обработкой выставления счетов, регистрации и всего необходимого для подключения нового клиента. Естественно, мы сделаем это максимально быстро, разбив задачи на более мелкие и запустив их конкурентно.

Материал предоставлен только для справки и ознакомления.
Поддержите автора, купив у него курс!

Скачать бесплатно Working with Concurrency in Go (Golang) по ссылке