Секреты дедлоков

Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше

https://habr.com/ru/companies/ozonbank/articles/908978/

#go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины

Секреты дедлоков

Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом...

Хабр

Advanced Goroutines Patterns в Go: Fan-out, Fan-in и Pipelines

В языке Go одним из важнейших преимуществ является мощная поддержка многопоточности и параллелизма за счёт горутин и каналов. В этой статье подробно разберём три продвинутых шаблона работы с горутинами:

https://habr.com/ru/articles/904892/

#go #golang #gopher #горутины #каналы_go #php #сервисы #программирование #go_очереди

Advanced Goroutines Patterns в Go: Fan-out, Fan-in и Pipelines

В языке Go одним из важнейших преимуществ является мощная поддержка многопоточности и параллелизма за счёт горутин и каналов. В этой статье подробно разберём три продвинутых шаблона работы с...

Хабр

Оптимизация конкурентных приложений в Go

Конкурентность — одно из ключевых преимуществ Go, но на практике она нередко превращается в источник боли: гонки, дедлоки, утечки горутин, избыточная сложность. Всё дело в том, что встроенные инструменты Go действительно мощны — но требуют аккуратности, понимания и здравого подхода. В этой статье мы разберёмся, почему так легко «прострелить себе ногу» при работе с конкурентностью, как этого избежать и как построить надёжную и эффективную архитектуру. А начнём мы — с лёгкого и ироничного рассказа в духе Чехова, где горутины встречаются с русской душой.

https://habr.com/ru/companies/vktech/articles/904046/

#go #оптимизация #горутины #vk_workspace #vk_tech #онтико

Оптимизация конкурентных приложений в Go

Эпиграф в стиле А.П. Чехова по следам оригинального выступления Иван Семёныч Троицкий, программист сорока лет, застенчивый и робкий, от природы больше склонный к одиночеству, чем к публичным...

Хабр

100 % cover, 0 % спокойствия

Привет, Хабр! Сегодня я хочу поговорить о том, как мы все иногда очарованы показателями тестового покрытия в Go — и как же часто эти проценты лукаво нам подмигивают. Казалось бы, влепили go test -cover , получили любимые цифры, приближающиеся к 100%, и можно выдохнуть. Но, увы, не всё так радужно, как хочется. На самом деле заветная сотка покрытия далеко не всегда означает, что ваш код действительно покрыт тестами.

https://habr.com/ru/companies/otus/articles/901522/

#go #горутины #Concurrency #покрытие_тестами #Тестирование_в_Go #go_test

100 % cover, 0 % спокойствия

Привет, Хабр! Сегодня я хочу поговорить о том, как мы все иногда очарованы показателями тестового покрытия в Go — и как же часто эти проценты лукаво нам подмигивают....

Хабр

Исследуем Go со всех сторон: обсуждаем конкурентность и безопасность, дискутируем о релизе 1.24

Как реализовать подходы Mutex и lock-free и какой из них выбрать для решения вашей задачи? Как подружиться с пакетами unsafe и использовать их для эффективной разработки? И, наконец, куда движется Go после в релизе 1.24? На эти и другие вопросы нашли ответы Go-разработчики из YADRO, Avito Tech и Yandex, а мы принесли вам записи и презентации их обсуждений. Из докладов вы узнаете о работе с критической секцией и подводных камнях unsafe. А после просмотра дискуссии поймете, какие фичи из нового релиза сделают вашу жизнь лучше.

https://habr.com/ru/companies/yadro/articles/901288/

#go #митап #горутины #unsafe #go_124

Исследуем Go со всех сторон: обсуждаем конкурентность и безопасность, дискутируем о релизе 1.24

Как реализовать подходы Mutex и lock-free и какой из них выбрать для решения вашей задачи? Как «подружиться» с пакетами unsafe и использовать их для эффективной разработки? И наконец, что ждет...

Хабр

Обработка паник в горутинах

Привет, Хабр! В этой статье рассмотрим, как безопасно запускать горутины, перехватывать в них паники, логировать их со стек трейсом и не дать одной багнутой функции завалить весь сервис.

https://habr.com/ru/companies/otus/articles/900452/

#golang #паники #горутины

Обработка паник в горутинах

Привет, Хабр! Сегодня рассмотрим, как безопасно запускать горутины, перехватывать в них паники, логировать их со стек трейсом и не дать одной багнутой функции завалить весь сервис....

Хабр

Введение в конкуренцию Go

Конкуренция (concurrency) в программировании позволяет разным частям программы выполняться независимо друг от друга. Это помогает повысить производительность и эффективнее использовать системные ресурсы. Конкуренция особенно важна для современных приложений, таких как сетевые сервисы или программы, работающие с множеством пользовательских запросов. Go предлагает уникальный подход к реализации конкуренции, который отличается от других языков программирования. В основе этого подхода лежат горутины и каналы — основные инструменты для написания конкурентного кода. В этом материале мы рассмотрим, как Go помогает решать задачи конкуренции, чем конкуренция отличается от параллелизма и почему использование этих инструментов делает приложения более быстрыми и масштабируемыми.

https://habr.com/ru/articles/896940/

#go #golang #конкуренция #параллелизм #каналы #горутины

Конкуренция в Go

Конкуренция (concurrency) в программировании позволяет разным частям программы выполняться независимо друг от друга. Это помогает повысить производительность и эффективнее использовать системные...

Хабр

[Перевод] Параллельное программирование на Go

На практике, создаваемое нами ПО выполняется на множестве процессоров. К сожалению, многие наши допущения, справедливые для одного процессора, в случае нескольких процессоров становятся ложными. Например, каким будет состояние памяти, если два процессора изменяют один блок памяти? В общем случае на этот вопрос ответить сложно. Может случиться так, что внесённое одним процессом изменение перепишет внесённое другим. Справедливо может быть и обратное: может «победить» изменение другого процессора. Или оба процесса могут попытаться внести изменение одновременно, в результате чего возникнет неопределённое состояние, не соответствующее ни одному ожидаемому. Мы называем такие операции доступа «гонками данных» — ситуацией, в которой два или более процессоров в программе одновременно получают доступ к одной области памяти, и хотя бы одна из этих операций доступа выполняет запись без должной синхронизации. Всё становится сложнее, если вам нужно, чтобы несколько процессоров изменяли одну и ту же память намеренно. Например, предположим, что у нас есть переменная, отслеживающая количество проданных товаров. В программе инкремент этой одной переменной могут выполнять несколько процессоров.

https://habr.com/ru/companies/ruvds/articles/896102/

#горутины #мьютексы #атомарные_операции #взаимные_блокировки #deadlock #гонки_данных #состояние_гонки #ruvds_перевод

Параллельное программирование на Go

На практике, создаваемое нами ПО выполняется на множестве процессоров. К сожалению, многие наши допущения, справедливые для одного процессора, в случае нескольких процессоров становятся ложными....

Хабр

Fan-Out, Fan-In с динамической балансировкой горутин в Golang

Привет, Хабр! Когда речь заходит о конкурентности в Go, паттерн Fan-Out, Fan-In — одна из важных концепций на мой взгляд. Он позволяет распределять задачи между несколькими горутинами и затем собирать результаты обратно в один поток.

https://habr.com/ru/companies/otus/articles/886740/

#golang #конкурентность #горутины

Fan-Out, Fan-In с динамической балансировкой горутин в Golang

Привет, Хабр! Когда речь заходит о конкурентности в Go, паттерн Fan‑Out, Fan‑In  — одна из важных концепций на мой взгляд. Он позволяет распределять задачи между несколькими...

Хабр
боже, перепишите это чудище, но моё любимое, на нормальный многопоток. Вообще где можно про #горутины почекать (хотя, если бы сам хотел, то нашёл бы)

https://github.com/troit5ky/tgmarkovbreadgo
GitHub - troit5ky/tgmarkovbreadgo: Генерирует сообщение на основе чата

Генерирует сообщение на основе чата. Contribute to troit5ky/tgmarkovbreadgo development by creating an account on GitHub.

GitHub