Как на самом деле устроены каналы в Golang? | Golang channels internals

Поділитися
Вставка
  • Опубліковано 14 лис 2024

КОМЕНТАРІ • 114

  • @nikolay_tuzov
    @nikolay_tuzov  2 роки тому +10

    ❤ Если у вас есть желание поддержать развитие канала:
    www.patreon.com/tuzov
    boosty.to/nikolay.tuzov
    - 👾 Мой канал в Telegram: t.me/ntuzov
    - 🗣 Чат в Telegram: t.me/+zsSZ63wEJDs3NGVi
    - 👀 Golang Digest: t.me/golang_digest - мои регулярные подборки интересных материалов по Go

  • @sinfulnest
    @sinfulnest 2 роки тому +17

    Николай, спасибо за труд! очень круто - понятно, с нужными деталями и без ненужных упрощений!

  • @def-any
    @def-any 2 роки тому +76

    "Сегодня я вам покажу, что каналы на деле устроены легко и просто"
    Также видео: 41 минута)))
    Просто шутка, не обижаемся)))
    101% пушка.

  • @alexzav1327
    @alexzav1327 5 місяців тому +4

    Это самый подробный разбор внутренностей каналов, что я смог найти, но при это всё изложено понятным языком. Спасибо большое!

  • @illia4503
    @illia4503 3 дні тому +1

    Спасибо за Ваш труд, очень классное видео!

  • @TheDavBag
    @TheDavBag 2 роки тому +3

    лучшее что я видел по Go в ру туториалах, просто огонь!

  • @scutc84
    @scutc84 Місяць тому +1

    Спасибо большое за очень качественный контент! Я еще даже не досмотрел, но уже понимаю, насколько это круто :)

  • @Maxlyaptsev
    @Maxlyaptsev 2 роки тому +28

    Это вам не "весь go за 20 минут"

  • @mmkamron
    @mmkamron 2 роки тому +8

    Долго ждали ) Надеюсь оно того стоит, 40 минут😮 Спасибо!

    • @nikolay_tuzov
      @nikolay_tuzov  2 роки тому +11

      Думаю, стоит 😚
      Я постарался минимизировать количество воды, и очень долго работал над структурой.
      Надеюсь, не зря)

    • @mmkamron
      @mmkamron 2 роки тому +4

      Посмотрел на одном дыхании, все четко и без воды👍Еще раз благодарю за этот прекрасный разбор каналов.

  • @micbalmicbalov9955
    @micbalmicbalov9955 2 роки тому +10

    Спасибо! У вас редкое умение, объяснять сложные вещи простыми словами.

  • @riendlyf
    @riendlyf 8 місяців тому +3

    Дуже якісне відео. Автор топчик, кожна деталь розгорнута, за ці 40 хвилин автор розкрив фундамент з яким можна вільно програмувати. Дуже дякую тобі авторе ❤

  • @UAStriker
    @UAStriker 2 роки тому +3

    Спасибо за столь подробную информацию

  • @denissokolov4029
    @denissokolov4029 Рік тому +2

    Невероятно крутой видос, много полезного материала, объясняемого не то что бы сложным языком. Сейчас как раз готовлюсь к собесу на го дева, очень помогло, спасибо!

  • @vic_shine
    @vic_shine Рік тому +3

    Отличное объяснение 😘 побольше бы таких видео про внутрянку Go!

  • @bambalbino
    @bambalbino 9 місяців тому

    Спасибо большое. Читал статьи, документацию, после твоего видео все встало на места.

  • @mjeksonmjekson4469
    @mjeksonmjekson4469 2 роки тому +1

    Круто, больше таких разборов про нюансы реализации. Это очень интересно и познавательно.

  • @stanislav3827
    @stanislav3827 2 роки тому +12

    Моё уважение! Очень классное объяснение!

  • @ДмитрийМихайлович-ю6х

    Отличная подача материала! Спасибо автору

  • @АлександрМарков-э2б
    @АлександрМарков-э2б 2 місяці тому

    Наконец-то понял каналы. Спасибо!

  • @phnxbr
    @phnxbr Рік тому

    Николай, у вас талант объяснять, и понятно, что требуется очень много времени на подготовку даже небольшого видео

  • @beyond6596
    @beyond6596 2 роки тому +7

    Николай, спасибо за труд! Очень интересно про атомики подробнее

  • @Iongjump
    @Iongjump Рік тому +1

    Вау, какое глубокое объяснение. Спасибо! Иллюстрации - моё почтение)

  • @НиколайКоваленко-х5ш

    Спасибо за труд, Николай! Отличные видео.

  • @smittychannel3252
    @smittychannel3252 2 роки тому +3

    Ура Видосик подъехал .Наконец-то каналы!!!

  • @НатальяКирюхина-м8б

    лучшие разборы! огромное спасибо за ваш труд
    P.S. еще есть 12-е поле timer, вероятно добавилось в более свежих версиях

  • @kekstroke
    @kekstroke 2 роки тому +3

    Очень интересно было бы послушать про concurrency в go простым языком. Не так много доступных ресурсов на эту тему и сама тема достаточно сложна)

  • @andreypalamarchuk472
    @andreypalamarchuk472 Рік тому +1

    Ждём видео про планировщик от Тузова 😊

  • @shyrops
    @shyrops 2 роки тому +3

    Спасибо огромное за ролик! ❤
    Вот это я понимаю разбор, вот это уровень!
    Отлично переплетённые части анимации, уточнений, ухода в самую маковку кодовой базы и ёмких лаконичных выводов!
    Как всегда достаточно полно, чтобы понять и главное понять куда двигаться и вовремя сокращено, чтобы не перезагрузить в усмерть - это талан, и я рад, что вы, Старший разработчик категории 2, им обладаете xD
    Жду ролик про Планировщик, уверен в качестве!
    ¡Buena suerte en México, amigo! ❤

  • @maxreshe6410
    @maxreshe6410 2 роки тому +3

    Спасибо! Отличная подача материала. Сначала комиксы и объяснение, затем разбор кода. Респект!

  • @hurlimanjumamuratova2425
    @hurlimanjumamuratova2425 5 місяців тому +1

    Спасибо большое, очень понравилось. Желаю успехов вам добрый человек☺️

  • @noctusha
    @noctusha 15 днів тому

    большое спасибо!
    было очень полезно и интересно!

  • @DJamal1803
    @DJamal1803 9 місяців тому

    Спасибо за видео очень классное видео побольше бы таких
    Про то как корутины или потоки работают

  • @ВалерияИванова-п6т
    @ВалерияИванова-п6т 5 місяців тому

    Великолепное объяснение, спасибо огромное!

  • @ЛангВладислав
    @ЛангВладислав Рік тому

    Классное видео, спасибо! После этого видео стал лучше понимать материал про каналы из других источников, что улучшило понимание в целом

  • @virtualriot4062
    @virtualriot4062 2 роки тому +3

    Уже думал читать статью, а тут видео вовремя

  • @abonentnumber3283
    @abonentnumber3283 Рік тому +1

    Редко я такое пишу.
    Молодец! Все наглядно.

  • @grigoriirochev440
    @grigoriirochev440 Рік тому +3

    большой труд - и очень понятно, благодарю!

  • @kwynto
    @kwynto 2 роки тому +2

    Контент в кайф. Давай еще. Давай, давай, давай.

  • @relax9332
    @relax9332 2 роки тому +1

    Очень качественный контент. Заочно поставил лайк!

  • @liteleak4049
    @liteleak4049 11 місяців тому

    Спасибо за огромню работу

  • @дмитрийм-т1п
    @дмитрийм-т1п Рік тому

    спасибо- у вас талант расказывать про иные измерения инопланетным языком)- вот ненашто даже возразить)

  • @germanzak
    @germanzak Рік тому

    Видео топ! Но у меня чуть глаза не вытекли, когда резко переключилась IDE на белый фон 😵‍💫

  • @sergey5758
    @sergey5758 6 місяців тому

    Спасибо большое за видео, это лучшие видео по устройству го что я видел 👍🏻👍🏻👍🏻👍🏻👍🏻

  • @ifdru74
    @ifdru74 5 місяців тому

    Спасибо за лекцию.

  • @puzz1372
    @puzz1372 2 роки тому +1

    Николай, про атомик очень интересно! Как это все устроено, почему работает именно так.
    Большое спасибо!

  • @IslamMamedow
    @IslamMamedow 2 місяці тому

    Спасибо, крутое объяснение

  • @Dantesik1
    @Dantesik1 2 роки тому

    Гениальнейшее видео, все понятно!

  • @elvirakharunova1589
    @elvirakharunova1589 10 місяців тому +1

    Большое спасибо за отличные, подробные объяснения! 😍😍😍

  • @МаксимМалофеев-п3ы

    Благодарю, лайк авансом!

  • @evijbvfidbvfhib
    @evijbvfidbvfhib Рік тому

    всё понятно, большое спасибо!

  • @MicaelAlastor
    @MicaelAlastor Рік тому

    Очень достойная обучалка-объяснялка, всё понятно и доступно, спасибо.

  • @rerurkful
    @rerurkful Місяць тому

    Спасибо!

  • @СамвелСаргисян-р3и

    я пока просмотрел только 3 минуты, но мне уже нравится

  • @proger150
    @proger150 Рік тому

    Николай, вы ах*eнны!Спасибо за детализацию!

  • @mjeksonmjekson4469
    @mjeksonmjekson4469 2 роки тому +2

    Расскажи ещё про разницу string aka []byte. В чем преимущества той и другой структуры, в чем разница, когда использовать , и что происходит при обратной конвертации)

  • @СергейБевзенко-и8с
    @СергейБевзенко-и8с 2 роки тому +1

    Николай, отличное видео.
    Жду видео про атомики на разных архитектурах

  • @PavPetukhov
    @PavPetukhov 11 місяців тому

    Так-с, интересно, подписался

  • @ЕрвандАгаджанян-в3к

    Супер! Спасибо огромное!

  • @ivanchukayev6547
    @ivanchukayev6547 2 місяці тому

    Очень круто!

  • @a98cb985
    @a98cb985 2 роки тому

    Очень спасибо!

  • @НикитаЛеонтьев-д2ж

    отличная подача материала, а еще отличные подкасты с крутыми ребятами, не забрасывай, пожалуйста, это

  • @noob-mp7jo
    @noob-mp7jo Рік тому

    Spasibo!

  • @RomanAlexandrov
    @RomanAlexandrov Рік тому +1

    Блин, очень очень круто и понятно всё рассказал, делай свой курс по Го.)

  • @mrmarkovniktgv3058
    @mrmarkovniktgv3058 Рік тому

    Большое спасибо за видео, все очень понятно и интересно) Подскажите пожалуйста, где можно ознакомиться с такими подробностями о языке?

  • @invisibleinvisible83
    @invisibleinvisible83 Рік тому

    Спасибо 🙏🏻❤️

  • @ronalddavilla5602
    @ronalddavilla5602 2 роки тому +1

    Привет! Очень круто! Продолжай!
    Вопрос, в какой проге делать такие красивые картинки и схемы?

    • @nikolay_tuzov
      @nikolay_tuzov  2 роки тому +1

      Схемы в основном тут делаю: excalidraw.com
      Но часть приходится рисовать прямо в PowerPoint, тогда меньше возни с анимацией.
      Гоферов просто в интернете нахожу.

  • @КириллГорбунов-ц4я
    @КириллГорбунов-ц4я 10 місяців тому

    Наконец человек не делает вид, а на самом деле знает что такое го

  • @orifdjonergashev9472
    @orifdjonergashev9472 Рік тому +2

    Привет!
    Классные у тебя разборы, разбери плз как работает планировщик go 1.20, а то я не нашел нормального урока

    • @nikolay_tuzov
      @nikolay_tuzov  Рік тому +2

      Такой ролик как раз в процессе сейчас

  • @кожаныйублюдок-э8е

    Один момент не доконца понмаю, после парковки горутину, насколько я понимаю работу планировщика, она отправляется в глобальную очередь, соответственно после её пробуждения она возвращается в очередь (fifo/lifo?) на какой-либо процессор или там не все так просто?

  • @benkenobi3333
    @benkenobi3333 3 місяці тому

    все супер кроме вступления: "каналы - это то что делает язык го таким привлекательным" - мне кажется, что каналы - это топ10 способов создать дэдлок

  • @andreipopov2700
    @andreipopov2700 Рік тому

    Спасибо за видео

  • @emotional_stuff
    @emotional_stuff Рік тому +1

    контент - бомба

  • @romankonovalov2588
    @romankonovalov2588 Рік тому

    ролик бомба, наверно лучший гофер в рус ютубе

  • @AnatolyAntonenko
    @AnatolyAntonenko Рік тому

    Спасибо за видео! Каналы перестали казаться чем-то инопланетным :)
    Вот такой вопрос возник: если по сути дела каналы реализованы отдельной библиотекой, и эту структуру может повторить любой разработчик, то зачем в го отдельный синтаксис чтения/записи в канал (оператор

  • @ArtemCYOU
    @ArtemCYOU 2 роки тому +2

    годно!)

  • @Kuchaian
    @Kuchaian Рік тому

    Ооочень крутое видео!

  • @lauhG3
    @lauhG3 Рік тому

    а что если в sendq несколько спящих горутин. Условно одна спящая горутина с нужными данными, а другая горутина с абсолютно другими данными, что в этом случае ? Или в качестве спящей горутины берется только самая последняя горутина.

  • @soundcloudlover
    @soundcloudlover Рік тому

    Если канал заполнен и горутина пытается в неё что-то записать, то как именно горутина получает этот поток (переменную), чтобы потом завернуть в очередь sudog?

  • @waffleboot
    @waffleboot Рік тому

    Про select не расказано как паркуется горутина если ни один из кейсов не сработает, ведь каналов в select может быть несколько. И как тогда просыпается горутина если ее будят по любому каналу и как она защищает себя от того, что проснулась, а возможности писать/читать уже нет потому что конкурентная горутина прочитала.

  • @user-thxu2
    @user-thxu2 Місяць тому

    Это топ.

  • @AhmatRossiaSila
    @AhmatRossiaSila Рік тому

    Скажите, в каком редакторе автор демонстрирует этот урок?
    Тоже начал бы такой использовать, где столько информации внутренней и sandbox.

    • @nikolay_tuzov
      @nikolay_tuzov  Рік тому

      Это GoLand - IDE от JetBrains. Он платный, но есть еще VSCode - бесплатный и тоже хороший. Я думаю, там всё это тоже есть.

    • @AhmatRossiaSila
      @AhmatRossiaSila Рік тому

      @@nikolay_tuzov Спасибо!
      Николай, как вы считаете, должен ли голангер по-умолчанию уметь работать с PostgreSQL, ElasticSearch, Mongo при собесе?
      У меня 90% отказов из-за отсутствия опыта по базам, но я всегда юзал самописные в своих разработках, а впрок учить просто так нет желания, да и не запомнится без долгой практики.

  • @ДмитрийПетрухин-ф5з

    В момент когда горутина блокируется, кто разблокирет мьютекс? Сама горутина перед блокировкой?

  • @plush_penguin
    @plush_penguin 2 роки тому +1

    Николай, какую IDE ты используешь?

    • @nikolay_tuzov
      @nikolay_tuzov  2 роки тому +1

      GoLand от компании JetBrains

  • @OOOJohnJ
    @OOOJohnJ Рік тому +1

    Осталось не понятным, почему isClosed это int32, а не bool или хотя бы int8

    • @nikolay_tuzov
      @nikolay_tuzov  Рік тому +2

      Это очень хороший вопрос. Если кратко - потому что пакет атомик не поддерживает bool. Хотя, с 1.19 поддерживает, но на самом деле, под капотом там всем равно int.
      Можешь также почитать обсуждение в комментах к моему посту на эту же тему: t.me/ntuzov/26
      А если захочется еще глубже копнуть, добро пожаловать в наш чатик Gopher Club, там у нас есть знатоки, которые помогут разобраться даже в самых низкоуровневых вопросах.

  • @robotomize7123
    @robotomize7123 2 роки тому

    Про атомики 100% нужно. Тема сложная, емкая

  • @leenur4749
    @leenur4749 8 місяців тому

    А как Reader-горутина прочитает данные из канала, если Sender перед тем как пойти спать не разблокировал мьютекс

  • @736939
    @736939 Рік тому

    7:40 Секундочку сами данные будут скопированны в канал или ссылки на данные?

    • @nikolay_tuzov
      @nikolay_tuzov  Рік тому +1

      Значения, конечно же. Но сами значения тоже могут быть указателями, тогда в канал будут скопированы указатели.

    • @736939
      @736939 Рік тому

      @@nikolay_tuzov Спасибо

  • @Евгений-н1б4с
    @Евгений-н1б4с Рік тому

    топ контент !!!

  • @errmaker
    @errmaker 4 місяці тому

    thnx ))

  • @volodya-nrg
    @volodya-nrg Рік тому

    Запишите пожалуйста разъясняющий ролик про atomic, а то все дойти до них не могу. За ранее спасибо.

  • @Hande_hoch
    @Hande_hoch Рік тому

    незаслуженно мало подписчиков и просмотров. и лайков

  • @artemrusinov3034
    @artemrusinov3034 Рік тому

    Поделитесь первоисточником

    • @nikolay_tuzov
      @nikolay_tuzov  Рік тому

      Их много, я для ролика прорабатываю много статьей, видосов, докладов

  • @slavanikulin8069
    @slavanikulin8069 2 роки тому

    про атомики интересно было бы

  • @дмитрийм-т1п
    @дмитрийм-т1п Рік тому

    спасибо за простату) - ты умеешь довести человека до отчаяния)

  • @el_Demiurg
    @el_Demiurg 2 роки тому +1

    как то странно прозвучало "если вы используете каналы вам не надо задумываться об элементах синхронизации"
    что-то не то с причинно-следственными связями
    точно также я могу сказать "используя мютекс, мне не надо задумываться о каналах, как и в каком порядке их открывать/закрывать, как избегать записи/чтения в/с нил каналами, как избежать паники при работе с каналами и т.д.и т .п.". Что звучит еще более страшно )))
    стоит задача, организовать работу двух и более потоков/горутин
    и в каждом конретном случае ты выбираешь какой элемент синхронизации использовать мютекс или что-то другое, в том числе канал

    • @nikolay_tuzov
      @nikolay_tuzov  2 роки тому +2

      А что не так с причинно-следственными связями?
      Давайте я задам несколько наводящих вопросов:
      Вот возьмём мапу - может ли несколько горутин одновременно добавлять в неё элементы? А в канал они могут одновременно писать? Почему?
      Если этого недостаточно, можем обсудить подробней в нашем чатике: t.me/+WyjmnP6la_QyYjAy
      Вести переписку в комментариях не очень удобно.

    • @nikolay_tuzov
      @nikolay_tuzov  2 роки тому +4

      Если кратко - канал не является примитивом синхронизации. Канал сам использует примитив синхронизации, а именно - встроенный мьютекс. И благодаря этому, разработчику не требуется прикрывать канал внешним мьютексом.
      Надеюсь, так понятней.

  • @gkavboy
    @gkavboy 4 місяці тому

    Шрифт на картинках ужасен

  • @timurkash
    @timurkash Рік тому

    Каналы без горутин - это что-то из серии велосипед с одним колесом

  • @N4g1b4t0r
    @N4g1b4t0r 8 місяців тому

    @nikolay_tuzov а mutex точно полностью блокирует буферизированный канал? Чтение невозможно одновременно с записью?

  • @АлександрЗверев-й1х

    Спасибо большое!