Добро пожаловать!

Зарегистрировавшись у нас, вам откроется возможность изучить более +150000 курсов популярных авторов .

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

    Голосов: 0
  • Тема Автор
  • #1

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


1665995492413.png



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

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

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

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

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

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

Данный курс создан на Английском языке!

Скачать
, чтобы посмотреть скрытый контент. !

, чтобы посмотреть скрытый контент. !
 
Сверху