Всё про конкурентность в Go

  Рет қаралды 12,969

defer panic

defer panic

Күн бұрын

Текстовый конспект к видео:
Boosty: boosty.to/deferpanic/posts/ad...
Patreon: / konspekt-k-video-73674718
Полезные ссылки вы найдете в нашем канале в Телеграме:
Telegram: t.me/deferpanic
Discord: / discord
Go - это язык, который не просто обладает хорошими инструментами, позволяющими использовать всю мощь многоядерных процессоров с помощью параллельного программирования. Go - это язык, который проектировался в первую очередь для конкурентных и параллельных вычислений. Поэтому я не могу пройти мимо данной темы.
В материале мы разберёмся как с базовыми инструментами параллельных вычислений (горутины, select и каналы), так и с примитивами синхронизации горутин (мьютексы, атомики, sync.Map, WaitGroup).
❤️ Реквизиты, если у вас есть желание поддержать меня и развитие канала:
Boosty - boosty.to/deferpanic
Patreon - / deferpanic
Donation Alerts - donationalerts.com/r/deferpanic
ETH - tomakado.eth
TON - tomakado.ton
BTC - 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo
00:00 - Вступление
00:55 - Что такое параллельные вычисления
03:25 - Процессы, потоки, корутины и горутины
05:26 - Как планировщик Go управляет горутинами
07:34 - Синхронизация горутин
09:52 - Буферизованные каналы
11:10 - Закрытие канала
11:42 - Итерирование по каналам
12:10 - Конструкция select
13:04 - Аксиомы каналов
13:37 - Конкурентный доступ и состояние гонки
16:25 - Примитивы синхронизации
16:46 - Mutex
18:40 - Mutex. Техника безопасности
19:23 - RWMutex
19:57 - Атомики (атомарные счётчики)
20:49 - sync.Map
21:11 - WaitGroup
21:48 - Достойны упоминания: sync.Pool и sync.Cond
22:35 - Финал
#ityoutubersru #ityoutubers #golang #go #concurrency

Пікірлер: 39
@GreenTech1256
@GreenTech1256 8 ай бұрын
Обычно я не пишу комментарии Но в этом видео чувствуется мощная подготовка и проделанная работа, а заодно и классная подача С удовольствием остальные мини-лекции хочу посмотреть и на практике попробовать эти знания
@KurumiFT
@KurumiFT 7 ай бұрын
На моей памяти это один из самых мощнейших и самых легко впитываемых видосов по более глубокое устройство Go. Лучший!
@a98cb985
@a98cb985 Жыл бұрын
Спасибо! Очень качественно и проработано!
@user-if1dj7fy2y
@user-if1dj7fy2y 14 күн бұрын
Чудесно звучит 🎉 Когда будет продолжение этой темы разговора
@wildjoe6259
@wildjoe6259 Жыл бұрын
Спасибо за видео! Очень познавательно!
@victorkochkarev2576
@victorkochkarev2576 24 күн бұрын
Отличное видео, спасибо вам.
@genaposikin4330
@genaposikin4330 Жыл бұрын
Спасибо за обзор👍👍👍, жду продолжение.
@nikolaikorotaev9470
@nikolaikorotaev9470 3 ай бұрын
Лучшее видео по этой теме, что я видел в интернете. Есть смысл на бусти подписаться!
@user-sv7cf6ll2i
@user-sv7cf6ll2i 9 ай бұрын
В примере 10:55 при отправлении пятого значения в канал будет дедлок даже если добавить принт, поскольку главная горутина заблокируется
@yippeeki-yey
@yippeeki-yey 8 ай бұрын
Классный материал, на уровне англоязычных туторилов
@nikitajolobov4591
@nikitajolobov4591 4 ай бұрын
спасибо тебе огромное за это мега полезное видео!
@pashk1ns
@pashk1ns 7 ай бұрын
Отличная подача, очень понравилось что сразу упомянули виртуализацию аппаратной части, т.е. что мы не оперируем низкоуровневыми терминами ядро и т.д. Это сильно упростит новичкам понимание ибо из-за похожей терминологии рантайма го, в своё время часто путался Респект
@user-st3fn9do1x
@user-st3fn9do1x 10 ай бұрын
Вау, классное видео. Спасибо!
@out_of_memory
@out_of_memory 10 ай бұрын
21:17 а можно ли в данной ситуации сделать wg.Add(len(urls)) единожды, перед запуском цикла? если так, то почему так делать не стоит? спасибо за видео!
@Seymurnet
@Seymurnet Жыл бұрын
Спасибо! Многое понял!
@medencev
@medencev Ай бұрын
13:26 4 аксиома действительна только для небуферизированных каналов func main() { ch := make(chan int, 1) ch
@gam6itko
@gam6itko 6 ай бұрын
Спасибо, очень познаваельно для go-джуна
@jannawant5007
@jannawant5007 9 ай бұрын
Спасибо за видео. Хотел бы уточнить, на 11:00 было сказано , что если добавить еще одну запись в канал , но при этом не добавлять еще одно чтение , то будет дедлок. На самом деле в этом примере, даже если добавить еще одно чтение дедлок все равно возникнет при записи 5 элемента, до чтения просто не дойдем.
@genjishimada4308
@genjishimada4308 Жыл бұрын
очень годно
@dkharms1181
@dkharms1181 Жыл бұрын
Горутины корректнее сравнивать не с корутинами, а с файберами, которые умеют не только в кооперативность, но и в вытеснение. Ну и плюс шедулер, но про это в видео есть :)
@cipplant2800
@cipplant2800 Жыл бұрын
Спасибо, как всегда на уровне! Какую тему следующую планируешь разобрать?
@deferpanic
@deferpanic Жыл бұрын
Вариантов несколько, пока определяюсь )
@cipplant2800
@cipplant2800 Жыл бұрын
@@deferpanic а какие?)
@deferpanic
@deferpanic Жыл бұрын
Тестирование, профилирование, обработка ошибок. Это если говорить только про Go. Но я хочу еще парочку более общих форматов попробовать. Как они сформулируются во что-то понятное, расскажу о них в телеге уже.
@cipplant2800
@cipplant2800 Жыл бұрын
@@deferpanic было бы классно про scheduler полный разборчик когда-нибудь
@kzdispatchii9754
@kzdispatchii9754 Жыл бұрын
@@deferpanic обработка ошибок было бы очень интересно. Чувствуется что тема не раскрыта в русскоязычном ютубе. А так хочется разобраться не читая скучные лонгриды )
@Mimookrokodill
@Mimookrokodill 7 күн бұрын
Видео супер
@vladimirmakarov6344
@vladimirmakarov6344 Жыл бұрын
Привет! Правильно ли я понял, что мьютекс объявляется в структуре по значению, при этом явная инициализация (например, в функции-конструкторе) не требуется?
@deferpanic
@deferpanic Жыл бұрын
Привет! Да, всё правильно )
@vladimirmakarov6344
@vladimirmakarov6344 Жыл бұрын
@@deferpanic По факту, можно хранить ссылку, но обязательно, чтобы все методы были с ссылочным ресивером. Но, тогда, придется выполнять явную инициализацию в функции-конструкторе
@deferpanic
@deferpanic Жыл бұрын
Есть ещё один краевой случай: если вы разыменуете ссылку на структуру, чтобы сделать копию, например, то ссылка на мьютекс в копии будет всё ещё та же.
@vladimirmakarov6344
@vladimirmakarov6344 Жыл бұрын
@@deferpanic интересное замечание, спасибо
@GreenTech1256
@GreenTech1256 8 ай бұрын
19:11 Сюрпризы будут с условно глобальным блокированием всех копий структур? А без ссылки на Mutex - структуры блокируются независимо?
@AlanAbishev
@AlanAbishev 3 ай бұрын
Отличная подача материала, а так же качество презентации
@zhasulan87
@zhasulan87 6 ай бұрын
Разве голанг после 1.4 версии планировщик не перешел на модель вытесняющей?
@deferpanic
@deferpanic 6 ай бұрын
Сейчас смешанная модель
@TheDavBag
@TheDavBag Жыл бұрын
забавно про конд, тоже не так давно просто увидел его. что-то юзлес или почти юзлес
@bobomurod
@bobomurod Жыл бұрын
Coooooooooler
@lincolnshow5778
@lincolnshow5778 Жыл бұрын
сексуальная лысина и отличный видос
Тесты. Что нужно знать разработчику
27:36
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 73 МЛН
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Levsob
Рет қаралды 33 МЛН
Pray For Palestine 😢🇵🇸|
00:23
Ak Ultra
Рет қаралды 30 МЛН
Антон Сергеев, «Go под капотом»
36:37
Kolesa Group
Рет қаралды 88 М.
Пишем мультиплеерную игру на Go
13:23
Jilio Stories
Рет қаралды 21 М.
Master Go Programming With These Concurrency Patterns (in 40 minutes)
46:15
Как на самом деле устроены каналы в Golang? | Golang channels internals
41:31
Generics in #Go. Should You Use It?
15:37
defer panic
Рет қаралды 3,4 М.
How charged your battery?
0:14
V.A. show / Магика
Рет қаралды 2,5 МЛН
⌨️ Сколько всего у меня клавиатур? #обзор
0:41
Гранатка — про VR и девайсы
Рет қаралды 653 М.
Apple watch hidden camera
0:34
_vector_
Рет қаралды 51 МЛН
МОЖНО ЛИ заряжать AirPods в чехле 🧐😱🧐 #airpods #applewatch #dyson
0:22
Apple_calls РЕПЛИКА №1 В РФ
Рет қаралды 20 М.