Перейти к содержимому

Изучаем 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