Тёмный

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

defer panic
Подписаться 4,9 тыс.
Просмотров 12 тыс.
50% 1

Текстовый конспект к видео:
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

Наука

Опубликовано:

 

18 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 38   
@user-if1dj7fy2y
@user-if1dj7fy2y День назад
Чудесно звучит 🎉 Когда будет продолжение этой темы разговора
@GreenTech1256
@GreenTech1256 7 месяцев назад
Обычно я не пишу комментарии Но в этом видео чувствуется мощная подготовка и проделанная работа, а заодно и классная подача С удовольствием остальные мини-лекции хочу посмотреть и на практике попробовать эти знания
@victorkochkarev2576
@victorkochkarev2576 10 дней назад
Отличное видео, спасибо вам.
@KurumiFT
@KurumiFT 6 месяцев назад
На моей памяти это один из самых мощнейших и самых легко впитываемых видосов по более глубокое устройство Go. Лучший!
@yippeeki-yey
@yippeeki-yey 7 месяцев назад
Классный материал, на уровне англоязычных туторилов
@a98cb985
@a98cb985 Год назад
Спасибо! Очень качественно и проработано!
@wildjoe6259
@wildjoe6259 Год назад
Спасибо за видео! Очень познавательно!
@genaposikin4330
@genaposikin4330 Год назад
Спасибо за обзор👍👍👍, жду продолжение.
@Seymurnet
@Seymurnet Год назад
Спасибо! Многое понял!
@nikitajolobov4591
@nikitajolobov4591 3 месяца назад
спасибо тебе огромное за это мега полезное видео!
@user-st3fn9do1x
@user-st3fn9do1x 9 месяцев назад
Вау, классное видео. Спасибо!
@user-sv7cf6ll2i
@user-sv7cf6ll2i 9 месяцев назад
В примере 10:55 при отправлении пятого значения в канал будет дедлок даже если добавить принт, поскольку главная горутина заблокируется
@gam6itko
@gam6itko 5 месяцев назад
Спасибо, очень познаваельно для go-джуна
@jannawant5007
@jannawant5007 9 месяцев назад
Спасибо за видео. Хотел бы уточнить, на 11:00 было сказано , что если добавить еще одну запись в канал , но при этом не добавлять еще одно чтение , то будет дедлок. На самом деле в этом примере, даже если добавить еще одно чтение дедлок все равно возникнет при записи 5 элемента, до чтения просто не дойдем.
@medencev
@medencev 20 дней назад
13:26 4 аксиома действительна только для небуферизированных каналов func main() { ch := make(chan int, 1) ch
@nikolaikorotaev9470
@nikolaikorotaev9470 2 месяца назад
Лучшее видео по этой теме, что я видел в интернете. Есть смысл на бусти подписаться!
@genjishimada4308
@genjishimada4308 Год назад
очень годно
@pashk1ns
@pashk1ns 7 месяцев назад
Отличная подача, очень понравилось что сразу упомянули виртуализацию аппаратной части, т.е. что мы не оперируем низкоуровневыми терминами ядро и т.д. Это сильно упростит новичкам понимание ибо из-за похожей терминологии рантайма го, в своё время часто путался Респект
@dkharms1181
@dkharms1181 Год назад
Горутины корректнее сравнивать не с корутинами, а с файберами, которые умеют не только в кооперативность, но и в вытеснение. Ну и плюс шедулер, но про это в видео есть :)
@cipplant2800
@cipplant2800 Год назад
Спасибо, как всегда на уровне! Какую тему следующую планируешь разобрать?
@deferpanic
@deferpanic Год назад
Вариантов несколько, пока определяюсь )
@cipplant2800
@cipplant2800 Год назад
@@deferpanic а какие?)
@deferpanic
@deferpanic Год назад
Тестирование, профилирование, обработка ошибок. Это если говорить только про Go. Но я хочу еще парочку более общих форматов попробовать. Как они сформулируются во что-то понятное, расскажу о них в телеге уже.
@cipplant2800
@cipplant2800 Год назад
@@deferpanic было бы классно про scheduler полный разборчик когда-нибудь
@kzdispatchii9754
@kzdispatchii9754 Год назад
@@deferpanic обработка ошибок было бы очень интересно. Чувствуется что тема не раскрыта в русскоязычном ютубе. А так хочется разобраться не читая скучные лонгриды )
@out_of_memory
@out_of_memory 9 месяцев назад
21:17 а можно ли в данной ситуации сделать wg.Add(len(urls)) единожды, перед запуском цикла? если так, то почему так делать не стоит? спасибо за видео!
@TheDavBag
@TheDavBag Год назад
забавно про конд, тоже не так давно просто увидел его. что-то юзлес или почти юзлес
@vladimirmakarov6344
@vladimirmakarov6344 Год назад
Привет! Правильно ли я понял, что мьютекс объявляется в структуре по значению, при этом явная инициализация (например, в функции-конструкторе) не требуется?
@deferpanic
@deferpanic Год назад
Привет! Да, всё правильно )
@vladimirmakarov6344
@vladimirmakarov6344 Год назад
@@deferpanic По факту, можно хранить ссылку, но обязательно, чтобы все методы были с ссылочным ресивером. Но, тогда, придется выполнять явную инициализацию в функции-конструкторе
@deferpanic
@deferpanic Год назад
Есть ещё один краевой случай: если вы разыменуете ссылку на структуру, чтобы сделать копию, например, то ссылка на мьютекс в копии будет всё ещё та же.
@vladimirmakarov6344
@vladimirmakarov6344 Год назад
@@deferpanic интересное замечание, спасибо
@GreenTech1256
@GreenTech1256 7 месяцев назад
19:11 Сюрпризы будут с условно глобальным блокированием всех копий структур? А без ссылки на Mutex - структуры блокируются независимо?
@bobomurod
@bobomurod 11 месяцев назад
Coooooooooler
@zhasulan87
@zhasulan87 5 месяцев назад
Разве голанг после 1.4 версии планировщик не перешел на модель вытесняющей?
@deferpanic
@deferpanic 5 месяцев назад
Сейчас смешанная модель
@lincolnshow5778
@lincolnshow5778 Год назад
сексуальная лысина и отличный видос
@AlanAbishev
@AlanAbishev 3 месяца назад
Отличная подача материала, а так же качество презентации
Далее
Основы многопоточности в Python
58:46
LOVE is BLIND but not this one 😍💍
00:20
Просмотров 10 млн
Обзор релиза Golang 1.22 | avito.code
11:23
ПК с Авито за 3000р
0:58
Просмотров 834 тыс.
Дени против умной колонки😁
0:40
POV: Cuando compras una TARJETA GRÁFICA al AZAR 😂
0:16