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

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ม.ค. 2025

ความคิดเห็น • 119

  • @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

  • @def-an-f3q
    @def-an-f3q 2 ปีที่แล้ว +88

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

  • @sinfulnest
    @sinfulnest 2 ปีที่แล้ว +20

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

  • @mmkamron
    @mmkamron 2 ปีที่แล้ว +8

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

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +11

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

    • @mmkamron
      @mmkamron 2 ปีที่แล้ว +4

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

  • @alexzav1327
    @alexzav1327 8 หลายเดือนก่อน +5

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

  • @riendlyf
    @riendlyf 10 หลายเดือนก่อน +3

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

  • @micbalmicbalov9955
    @micbalmicbalov9955 2 ปีที่แล้ว +11

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

  • @TheDavBag
    @TheDavBag 2 ปีที่แล้ว +3

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

  • @denissokolov4029
    @denissokolov4029 ปีที่แล้ว +2

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

  • @mjeksonmjekson4469
    @mjeksonmjekson4469 2 ปีที่แล้ว +1

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

  • @vic_shine
    @vic_shine ปีที่แล้ว +3

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

  • @shyrops
    @shyrops 2 ปีที่แล้ว +3

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

  • @scutc84
    @scutc84 3 หลายเดือนก่อน +1

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

  • @phnxbr
    @phnxbr ปีที่แล้ว

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

  • @Xttb4
    @Xttb4 2 หลายเดือนก่อน +1

    Огромное спасибо за материал! Очень подробно и в то же время доступно объяснено.

  • @ДмитрийМихайлович-ю6х
    @ДмитрийМихайлович-ю6х 2 ปีที่แล้ว +4

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

  • @Maxlyaptsev
    @Maxlyaptsev 2 ปีที่แล้ว +43

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

    • @leshi_1
      @leshi_1 หลายเดือนก่อน

      Зато чертовски интересно 😊

  • @UAStriker
    @UAStriker 2 ปีที่แล้ว +3

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

  • @НиколайКоваленко-х5ш
    @НиколайКоваленко-х5ш 2 ปีที่แล้ว +3

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

  • @stanislav3827
    @stanislav3827 2 ปีที่แล้ว +12

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

  • @smittychannel3252
    @smittychannel3252 2 ปีที่แล้ว +3

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

  • @Iongjump
    @Iongjump ปีที่แล้ว +1

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

  • @beyond6596
    @beyond6596 2 ปีที่แล้ว +7

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

  • @maxreshe6410
    @maxreshe6410 2 ปีที่แล้ว +3

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

  • @НатальяКирюхина-м8б
    @НатальяКирюхина-м8б 2 หลายเดือนก่อน

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

  • @bambalbino
    @bambalbino 11 หลายเดือนก่อน

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

  • @illia4503
    @illia4503 2 หลายเดือนก่อน +1

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

  • @xurjumon
    @xurjumon 8 หลายเดือนก่อน +1

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

  • @ЛангВладислав
    @ЛангВладислав 2 ปีที่แล้ว

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

  • @noctusha
    @noctusha 2 หลายเดือนก่อน

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

  • @lifedaemon
    @lifedaemon 2 หลายเดือนก่อน +1

    Очень находчиво объясняете, видео супер, только по визуалу в некоторых местах штриховка мешала читать буквы

  • @kwynto
    @kwynto 2 ปีที่แล้ว +2

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

  • @relax9332
    @relax9332 2 ปีที่แล้ว +1

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

  • @InfraRed-v2o
    @InfraRed-v2o หลายเดือนก่อน

    Отличные видео про внутренности Go! Жаль, нет таких же про интерфейсы, или мне не удалось найти...

  • @DJamal1803
    @DJamal1803 11 หลายเดือนก่อน

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

  • @virtualriot4062
    @virtualriot4062 2 ปีที่แล้ว +3

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

  • @kekstroke
    @kekstroke 2 ปีที่แล้ว +4

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

  • @grigoriirochev440
    @grigoriirochev440 ปีที่แล้ว +3

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

  • @АлександрМарков-э2б
    @АлександрМарков-э2б 4 หลายเดือนก่อน

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

  • @дмитрийм-т1п
    @дмитрийм-т1п ปีที่แล้ว

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

  • @sergey5758
    @sergey5758 9 หลายเดือนก่อน

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

  • @ВалерияИванова-п6т
    @ВалерияИванова-п6т 7 หลายเดือนก่อน

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

  • @andreypalamarchuk472
    @andreypalamarchuk472 ปีที่แล้ว +1

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

  • @Dantesik1
    @Dantesik1 2 ปีที่แล้ว

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

  • @СергейБевзенко-и8с
    @СергейБевзенко-и8с 2 ปีที่แล้ว +1

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

  • @elvirakharunova1589
    @elvirakharunova1589 ปีที่แล้ว +1

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

  • @liteleak4049
    @liteleak4049 ปีที่แล้ว

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

  • @MicaelAlastor
    @MicaelAlastor ปีที่แล้ว

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

  • @abonentnumber3283
    @abonentnumber3283 ปีที่แล้ว +1

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

  • @andreipopov2700
    @andreipopov2700 2 ปีที่แล้ว

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

  • @IslamMamedow
    @IslamMamedow 4 หลายเดือนก่อน

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

  • @НикитаЛеонтьев-д2ж
    @НикитаЛеонтьев-д2ж 2 ปีที่แล้ว

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

  • @puzz1372
    @puzz1372 2 ปีที่แล้ว +1

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

  • @evijbvfidbvfhib
    @evijbvfidbvfhib ปีที่แล้ว

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

  • @МаксимМалофеев-п3ы
    @МаксимМалофеев-п3ы 2 ปีที่แล้ว

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

  • @ifdru74
    @ifdru74 7 หลายเดือนก่อน

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

  • @ЕрвандАгаджанян-в3к
    @ЕрвандАгаджанян-в3к 2 ปีที่แล้ว

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

  • @germanzak
    @germanzak ปีที่แล้ว

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

  • @RomanAlexandrov
    @RomanAlexandrov ปีที่แล้ว +1

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

  • @rerurkful
    @rerurkful 4 หลายเดือนก่อน

    Спасибо!

  • @mjeksonmjekson4469
    @mjeksonmjekson4469 2 ปีที่แล้ว +2

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

  • @СамвелСаргисян-р3и
    @СамвелСаргисян-р3и 2 ปีที่แล้ว

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

  • @PavPetukhov
    @PavPetukhov ปีที่แล้ว

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

  • @ronalddavilla5602
    @ronalddavilla5602 2 ปีที่แล้ว +1

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

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +1

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

  • @ivanchukayev6547
    @ivanchukayev6547 4 หลายเดือนก่อน

    Очень круто!

  • @a98cb985
    @a98cb985 2 ปีที่แล้ว

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

  • @invisibleinvisible83
    @invisibleinvisible83 2 ปีที่แล้ว

    Спасибо 🙏🏻❤️

  • @romankonovalov2588
    @romankonovalov2588 ปีที่แล้ว

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

  • @noob-mp7jo
    @noob-mp7jo ปีที่แล้ว

    Spasibo!

  • @mrmarkovniktgv3058
    @mrmarkovniktgv3058 ปีที่แล้ว

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

  • @КириллГорбунов-ц4я
    @КириллГорбунов-ц4я ปีที่แล้ว

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

  • @orifdjonergashev9472
    @orifdjonergashev9472 ปีที่แล้ว +2

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

    • @nikolay_tuzov
      @nikolay_tuzov  ปีที่แล้ว +2

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

  • @proger150
    @proger150 ปีที่แล้ว

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

  • @waffleboot
    @waffleboot ปีที่แล้ว +1

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

  • @кожаныйублюдок-э8е
    @кожаныйублюдок-э8е ปีที่แล้ว

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

  • @AnatolyAntonenko
    @AnatolyAntonenko ปีที่แล้ว

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

  • @emotional_stuff
    @emotional_stuff ปีที่แล้ว +1

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

  • @ArtemCYOU
    @ArtemCYOU 2 ปีที่แล้ว +2

    годно!)

  • @Kuchaian
    @Kuchaian 2 ปีที่แล้ว

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

  • @736939
    @736939 ปีที่แล้ว

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

    • @nikolay_tuzov
      @nikolay_tuzov  ปีที่แล้ว +1

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

    • @736939
      @736939 ปีที่แล้ว

      @@nikolay_tuzov Спасибо

  • @lauhG3
    @lauhG3 ปีที่แล้ว

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

  • @AhmatRossiaSila
    @AhmatRossiaSila ปีที่แล้ว

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

    • @nikolay_tuzov
      @nikolay_tuzov  ปีที่แล้ว

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

    • @AhmatRossiaSila
      @AhmatRossiaSila ปีที่แล้ว

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

  • @soundcloudlover
    @soundcloudlover ปีที่แล้ว

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

  • @plush_penguin
    @plush_penguin 2 ปีที่แล้ว +1

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

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +1

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

  • @user-thxu2
    @user-thxu2 3 หลายเดือนก่อน

    Это топ.

  • @leenur4749
    @leenur4749 10 หลายเดือนก่อน

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

  • @ДмитрийПетрухин-ф5з
    @ДмитрийПетрухин-ф5з 2 ปีที่แล้ว

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

  • @volodya-nrg
    @volodya-nrg 2 ปีที่แล้ว

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

  • @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% нужно. Тема сложная, емкая

  • @artemrusinov3034
    @artemrusinov3034 ปีที่แล้ว

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

    • @nikolay_tuzov
      @nikolay_tuzov  ปีที่แล้ว

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

  • @errmaker
    @errmaker 7 หลายเดือนก่อน

    thnx ))

  • @Евгений-н1б4с
    @Евгений-н1б4с ปีที่แล้ว

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

  • @Hande_hoch
    @Hande_hoch 2 ปีที่แล้ว

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

  • @slavanikulin8069
    @slavanikulin8069 2 ปีที่แล้ว

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

  • @benkenobi3333
    @benkenobi3333 5 หลายเดือนก่อน

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

  • @дмитрийм-т1п
    @дмитрийм-т1п ปีที่แล้ว

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

  • @gkavboy
    @gkavboy 6 หลายเดือนก่อน

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

  • @el_Demiurg
    @el_Demiurg 2 ปีที่แล้ว +1

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

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +2

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

    • @nikolay_tuzov
      @nikolay_tuzov  2 ปีที่แล้ว +4

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

  • @timurkash
    @timurkash ปีที่แล้ว

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