Очень круто! Больно не хватает таких продвинутых уроков по Go
@DTorange1 Жыл бұрын
Отличный выпуск, спасибо! Краткие примеры использования в каждом паттерне - кул!
@powerstrike97 Жыл бұрын
Класс! Спасибо большое за выпуск!
@petrustyuzhanin6597 Жыл бұрын
Я в воссторге! Очень понравился подробный разбор примеров.
@Николай-с5е1з Жыл бұрын
Хорошие примеры, спасибо!
@UAStriker Жыл бұрын
Круть! Побольше б таких видосов
@dmitryd1572 Жыл бұрын
Толковое видео, благодарю за Ваш труд !
@daniil-pershin Жыл бұрын
Все варианты переписал, спасибо, полезная практика получилась)) Примеры использования, тоже были полезны Был бы рад еще увидеть эталонный или какой-нибудь условный пример продакшн кода, по типу, где вместо done ch, используется ctx.Done() еще раз спасибо за этот полезный контент ❤
@andreyg5875 Жыл бұрын
Под 2х прям голос хорошо ложится) Продолжайте!
@kitajskijmost Жыл бұрын
Больше видосиков по Go!
@lakemanr Жыл бұрын
Спасибо за видео! А правильно я понимаю, при использовании select c done / чтение из канала, часть данных может быть потеряна, так как в ситуации, когда одновременно закрыт done и есть данные в канале, поведение неопеределенное и может быть выбран done? Если да, хороший ли это подход терять данные?
@AvitoTech Жыл бұрын
Виталий в исходном репозитории вносил связанные с этим правки, чтобы даже если канал done закрыт, мы дочитывали оставшиеся данные из канала. Пример github.com/make-it-git/golang-concurrency-patterns-talk/commit/fc861e595edfa87e17d4e5264ffe1531603f2f7e Так случается когда пишешь код не в продакшн, а для синтетических примеров, не покрывая его тестами 😁
@ognevfedor Жыл бұрын
Судя по просмотрам GO почему-то не так интересен массе, хотя очень перспективен. Спасибо за полезную информацию, было интересно слушать! Надеюсь будут ещё полезные ролики по Best Practices
@NochnoyPutnik Жыл бұрын
пример кода Fun In Extended иногда работает нормально, но часто выдает ошибку: fatal error: all goroutines are asleep - deadlock! Переписал точно. Можете проверить и объяснить, почему?
@AvitoTech Жыл бұрын
github.com/make-it-git/golang-concurrency-patterns-talk/commit/fc861e595edfa87e17d4e5264ffe1531603f2f7e Вы правы, Виталий здесь ошибся, не проверив работу без time.Sleep. Код успевает отработать в большом кол-ве прогонов. Проблема в том, что каналы fanIn1, fanIn2 небуферизованные, горутина внутри main, которая читает каналы, может завершиться раньше, чем нужно, и попытка записи в consumer в канал заблокируется навсегда. Каналы могут быть коварны и не всегда очевидно, где можно словить проблемы без расширенных автотестов с флагом -race 🙂
@casper247 Жыл бұрын
Если в примере с Fan In убрать time.Sleep внутри select в функции producer, то будет deadlock
@makeitgit Жыл бұрын
Спасибо за валидацию и ручные теcты :) Посмотрите исходный репозиторий, там я внес исправления, о которых изначально не подумал, что стоит их провалидировать дополнительно на дедлоки.
@Iyozy Жыл бұрын
@@makeitgit в исправлении канал fanIn нигде не закрывается, получается, что fanInDone не может изменить свое состояние никаким образом Изначально проблема в том(даже в исходном коде, не убирая никакой sleep). Что горутина читающая из fanIn, завершается по done, а писатель в канал нет. Мы получаем deadlock на wg.Wait() из-за того, что consumer заблокирован на запись(канал fanIn не закрывается), и от этого никогда не сделает wg.Done(). Понятное дело, это происходит только иногда, но это происходит. В исправлении, мы просто игнорируем блок done в читающей из fanIn горутине, это тоже решение, она завершится вместе с основной программой, но тогда никакие новые переменные не нужны.
@КоньЛюдоед-ф6ф9 ай бұрын
спасибо было очень познавательно
@СергейИванов-ы7ч5ы Жыл бұрын
Первое правило использования каналов - использовать только в крайнем случае и не в подобных вариантах
@dmitryibaranov6763 Жыл бұрын
Не так, первой правило горутин - не использовать горутины )
@СергейИванов-ы7ч5ы Жыл бұрын
@@dmitryibaranov6763 Это уже второе правило
@dmitryibaranov6763 Жыл бұрын
Материал мега полезен... но когда объясняешь свои языком - куда понятнее, чем читать этот "отшлифованные текст". На слух - прям робота слушаешь, СКУКА на втором предложении уже. Не надо так делать. Можно и блондинку посадить которая будет через раз улыбаться. Смысл этого разработчика, когда он ни 1 слова от себя не добавил ?))
@makeitgit Жыл бұрын
Не соглашусь с вами. Весь текст и примеры я писал сам, вложив в это довольно значительное время
@dmitryibaranov6763 Жыл бұрын
@@makeitgit я и не говорил, что текст писал кто иной. Он отшлифован. Супер Мега идеальный текст. Но люди не говорят так. Единицы так разговаривают - имея соответствующее образование и т д. В беседе я на 💯 уверен вы так не повествуете истории. Я вчера вечером уснул слушая. Сегодня заход номер 2, т к считаю материал полезным ) Монотонная заученная речь. Небольшие склейки видно, т к скорее что-то было не идеально и дубль 2, дубль 3. 100 раз лучше своим языком, как в беседе.
@Setalos Жыл бұрын
@@makeitgit проблема не в тексте, а в том что вы читаете с телесуфлёра, а не рассказываете своими словами