Udemy [Udemy] Работа с параллелизмом в Go (Golang) (2022)

  • Автор темы Trinity
  • Дата начала
[Udemy] Работа с параллелизмом в Go (Golang) (2022)

1665930059202


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

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

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

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

В этом курсе мы подробно рассмотрим использование групп ожидания, мьютексов и каналов. Мы также рассмотрим некоторые проблемы, связанные с параллелизмом, в том числе преждевременное завершение программы и условия гонки. Сначала мы получим хорошее представление о том, как эти вещи работают, решая некоторые из классических задач, встречающихся в области компьютерных наук, включая обедающих философов, проблему производителя/потребителя и проблему спящего цирюльника. Эти проблемы являются классическими по одной причине: они заставляют разработчика найти наилучший подход к работе с кодом, который выполняется одновременно или параллельно.

Наконец, мы закончим курс более «реальной» проблемой, где мы должны зарегистрировать клиента для какой-либо службы подписки и позаботиться о выставлении счетов, регистрации и обо всем, что необходимо для работы клиента. Мы сделаем это, естественно, как можно быстрее, разделив необходимые задачи на более мелкие и запустив их одновременно.

Материал на английском языке

Подробнее:
Скачать:
 

Похожие темы

Trinity
Ответы
0
Просмотры
314
Udemy.com
Trinity
Trinity
Trinity
Ответы
0
Просмотры
493
Trinity