Изучаем Golang: введение в паттерны конкурентности, горутины и каналы
Mario Carrion
0:00 / 0:00
Изучаем Golang: введение в паттерны конкурентности, горутины и каналы
61 409 просмотров · 5 лет назад
Mario Carrion
16,9 тыс. подписчиков
61 409 просмотров · 5 лет назад
Добро пожаловать! Давайте изучим шаблоны параллельного программирования в Go/Golang, но сначала разберемся с параллелизмом в Go/Golang, включая горутины, каналы и необходимые ключевые слова: close, range и select.
Что такое горутина?
Это легковесный поток, управляемый средой выполнения Go/Golang, независимо выполняемая функция со своим собственным стеком вызовов.
Что такое канал?
Это механизм, с помощью которого мы можем отправлять и получать значения; он использует оператор стрелки, указывающий на поток данных.
По умолчанию отправитель и получатель блокируются, если другая сторона не готова.
Что такое буферизованный канал?
Это тип буфера, имеющий длину.
Отправка в буферизованный канал блокируется, если он заполнен, а получение из буферизованного канала блокируется только тогда, когда он пуст.
Что еще мы можем делать с каналами?
Введены 3 новых ключевых слова, применимых к каналам: "close", "select" и "range":
"close" позволяет закрыть канал, то есть мы не можем получать или отправлять в него значения.
"selects" позволяет получать сообщения из нескольких каналов через "cases", это похоже на "switch", также поддерживает значение по умолчанию.
"range" аналогично ключевому слову, используемому при переборе срезов/массивов; но в этом случае он будет непрерывно получать значения из канала, пока тот не будет закрыт.
Напомним, это "Введение в шаблоны параллельного программирования в Go/Golang", в будущих выпусках я опишу конкретные шаблоны, которые следует использовать при построении параллельных программ.
---
ССЫЛКИ НА ВАЖНЫЕ МАТЕРИАЛЫ
Предыдущий эпизод: "Изучение Golang: Типы интерфейсов - Часть 2 (пустой интерфейс, утверждение типа и переключение типов)" • Learning Golang: Interface Types - Part 2 ...
Пример кода: https://github.com/MarioCarrion/video...
Плейлист "Архитектура программного обеспечения на Go": • Software Architecture and System Design in...
Плейлист "Изучение Go": • Learning Go/Golang
Плейлист "Создание микросервисов на Go": • Building Microservices in Golang/Go
Плейлист "GoTools и пакеты": • Golang/Go Tools and Packages
Плейлист "Тестирование на Go": • Testing in Golang/Go
00:00 Вступление
00:16 Что такое параллельное выполнение?
00:36 Что такое многопоточность?
00:46 Аналогия: Параллелизм
01:53 Аналогия: Параллелизм
02:20 Что такое горутина в Golang?
02:49 Пример: горутина в Golang
04:03 Что такое канал в Golang?
05:30 Пример 1: каналы в Golang
06:40 Пример 2: каналы и горутины в Golang
08:35 Что такое буферизованный канал в Golang?
09:56 Пример: буферизованные каналы в Golang
11:39 Каналы: Close, Select и Range в Golang
12:33 Пример: горутины и каналы в Golang
17:12 Заключение: Введение в шаблоны параллельного выполнения в Golang
---
Кто я:
Привет👋🏼! Меня зовут Марио, я опытный архитектор программного обеспечения и ведущий бэкенд-инженер с более чем 16-летним профессиональным опытом разработки самых разных программных продуктов, включая локальные системы промышленной автоматизации, компоненты для обеспечения доступности рабочего стола и браузера на базе Linux, а также распределенные рекламные микросервисы.
Каждую неделю я буду делиться с вами различными темами, которые я освоил, работая в небольших стартапах и крупных компаниях, включая процессы, которые я использовал на протяжении многих лет для успешной реализации сложных корпоративных систем от начала до конца.
Подписывайтесь, если вам интересны разработка программного обеспечения, архитектура программного обеспечения и проектирование систем!
Продолжайте в том же духе. Не сдавайтесь!
/ mariocarrion
/ mario.carrion
#golang #tutorial #concurrency
--- Наши партнерские ссылки ниже
Покупайте наши любимые товары на Amazon → https://www.amazon.com/shop/rubycarrion
Покупайте товары из моей ленты в Instagram на моей странице LIKEtoKNOWit (LTK) → https://www.liketoknow.it/RubyCarrion
Покупайте лучшие предложения и акции в Best Buy → https://bestbuy.7tiv.net/c/2558226/68...
Получите 30-дневную БЕСПЛАТНУЮ пробную версию Epidemic Sound → https://www.epidemicsound.com/referra...
Попробуйте 30-дневную БЕСПЛАТНУЮ пробную версию Amazon Prime → https://amzn.to/3yf9a0f
Мне очень нравится получать кэшбэк, и я думаю, вам тоже понравится! Присоединяйтесь БЕСПЛАТНО и получите 30 долларов, потратив 30 долларов. https://www.rakuten.com/r/RUBYRA132?e...
--- Наш канал с видеоблогами
/ rubycarrion