Работа с параллелизмом в Go (Golang)
Working with Concurrency in Go (Golang)
udemy
Go, часто называемый Golang, хорошо известен тем, что позволяет легко работать с параллелизмом. Чтобы заставить конкретную функцию работать одновременно, все, что нам нужно сделать, это добавить слово «go» к вызову функции, и она будет работать в фоновом режиме как GoRoutine. Встроенный в Go планировщик позволяет убедиться, что данный GoRoutine запускается, когда он должен, и настолько эффективно, насколько это возможно.
Однако это не означает, что работать с параллелизмом в Go просто — безопасное для потоков программирование требует тщательного планирования и, что наиболее важно, требует от разработчиков абсолютно четкого понимания того, как Go работает с параллелизмом.
В стандартной библиотеке Go предлагает нам несколько способов работы с одновременно выполняющимися частями нашей программы прямо в стандартной библиотеке: sync.WaitGroup, который позволяет нам ждать завершения задач; sync.Mutex, который позволяет нам блокировать и разблокировать ресурсы, чтобы никакие две программы GoRoutine не могли одновременно обращаться к одному и тому же месту в памяти; и, наконец, каналы, которые позволяют GoRoutines отправлять и получать данные друг от друга.
Подход Go к параллелизму довольно прост и более или менее резюмирует эту мантру: не общайтесь, разделяя память; вместо этого делитесь памятью, общаясь. Каналы — это средства, с помощью которых мы обычно делимся памятью при общении.
В этом курсе мы подробно рассмотрим использование групп ожидания, мьютексов и каналов. Мы также рассмотрим некоторые проблемы, связанные с параллелизмом, в том числе преждевременное завершение программы и условия гонки. Сначала мы получим хорошее представление о том, как эти вещи работают, решая некоторые из классических задач, встречающихся в области компьютерных наук, включая обедающих философов, проблему производителя/потребителя и проблему спящего цирюльника. Эти проблемы являются классическими по одной причине: они заставляют разработчика найти наилучший подход к работе с кодом, который выполняется одновременно или параллельно.
Наконец, мы закончим курс более «реальной» проблемой, где мы должны зарегистрировать клиента для какой-либо службы подписки и позаботиться о выставлении счетов, регистрации и обо всем, что необходимо для работы клиента. Мы сделаем это, естественно, как можно быстрее, разделив необходимые задачи на более мелкие и запустив их одновременно.
Материал на английском языке
Продажник:
Скачать:
Working with Concurrency in Go (Golang)
udemy
Go, часто называемый Golang, хорошо известен тем, что позволяет легко работать с параллелизмом. Чтобы заставить конкретную функцию работать одновременно, все, что нам нужно сделать, это добавить слово «go» к вызову функции, и она будет работать в фоновом режиме как GoRoutine. Встроенный в Go планировщик позволяет убедиться, что данный GoRoutine запускается, когда он должен, и настолько эффективно, насколько это возможно.
Однако это не означает, что работать с параллелизмом в Go просто — безопасное для потоков программирование требует тщательного планирования и, что наиболее важно, требует от разработчиков абсолютно четкого понимания того, как Go работает с параллелизмом.
В стандартной библиотеке Go предлагает нам несколько способов работы с одновременно выполняющимися частями нашей программы прямо в стандартной библиотеке: sync.WaitGroup, который позволяет нам ждать завершения задач; sync.Mutex, который позволяет нам блокировать и разблокировать ресурсы, чтобы никакие две программы GoRoutine не могли одновременно обращаться к одному и тому же месту в памяти; и, наконец, каналы, которые позволяют GoRoutines отправлять и получать данные друг от друга.
Подход Go к параллелизму довольно прост и более или менее резюмирует эту мантру: не общайтесь, разделяя память; вместо этого делитесь памятью, общаясь. Каналы — это средства, с помощью которых мы обычно делимся памятью при общении.
В этом курсе мы подробно рассмотрим использование групп ожидания, мьютексов и каналов. Мы также рассмотрим некоторые проблемы, связанные с параллелизмом, в том числе преждевременное завершение программы и условия гонки. Сначала мы получим хорошее представление о том, как эти вещи работают, решая некоторые из классических задач, встречающихся в области компьютерных наук, включая обедающих философов, проблему производителя/потребителя и проблему спящего цирюльника. Эти проблемы являются классическими по одной причине: они заставляют разработчика найти наилучший подход к работе с кодом, который выполняется одновременно или параллельно.
Наконец, мы закончим курс более «реальной» проблемой, где мы должны зарегистрировать клиента для какой-либо службы подписки и позаботиться о выставлении счетов, регистрации и обо всем, что необходимо для работы клиента. Мы сделаем это, естественно, как можно быстрее, разделив необходимые задачи на более мелкие и запустив их одновременно.
Материал на английском языке
Продажник:
Для просмотра содержимого вам необходимо зарегистрироваться!
Скачать:
Последнее редактирование: