home.social

#горутины — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #горутины, aggregated by home.social.

  1. Как перестать наступать на грабли в Go: набор рабочих рецептов

    Пишете на Go или только начинаете изучать язык? Эта шпаргалка точно сэкономит вам кучу времени. Никакой воды, абстрактных рассуждений и скучных введений. Мы пройдёмся по тем самым ситуациям, с которыми бэкендеры сталкиваются на каждом проекте: конкурентность, сеть, работа с JSON, обработка ошибок, тесты и дебаг. Можете смело добавлять это в закладки. Забыли синтаксис или паттерн, открыли нужный раздел, скопировали, адаптировали и поехали дальше.

    habr.com/ru/companies/ruvds/ar

    #go #горутины #горутина #лайфхаки #рецепты #шпоргалка #cheatsheet #го #оптимизация #ruvds_статьи

  2. [Перевод] Одна строка — тысячи горутин: как мы поймали утечку памяти в сервисе на Go

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

    habr.com/ru/companies/otus/art

    #golang #утечка_памяти #горутины #сборщик_мусора #пул_воркеров #профилирование_памяти #логирование_в_контексте #высоконагруженные_сервисы #contextContext #go

  3. [Перевод] Как мы нашли баг в компиляторе Go

    Каждую секунду в дата-центры Cloudflare в 330 городах отправляется 84 миллиона HTTP-запросов. Из-за этого даже самые редкие из багов возникают достаточно часто. На самом деле, именно наши масштабы позволили нам недавно обнаружить в компиляторе Go на arm64 баг, вызывающий состояние гонки в генерируемом коде. В этом посте мы расскажем о том, как впервые столкнулись с багом, исследовали его и докопались до его первопричины.

    habr.com/ru/companies/ruvds/ar

    #segmentation_fault #паника #cloudflare #горутины #ruvds_перевод

  4. [Перевод] Сборщик мусора в Go. Часть 3: Управление скоростью GC

    Команда Go for Devs подготовила перевод статьи о том, как в Go устроено управление скоростью работы сборщика мусора. TL;DR: даже при тысячах горутин GC подстраивается под нагрузку, выбирая между меньшим числом долгих пауз и большим числом коротких. Итог — разработчику почти не нужно вручную «крутить» настройки, рантайм сам находит оптимальный ритм.

    habr.com/ru/articles/953426/

    #Go #GC #garbage_collection #производительность #конкурентность #рантайм #горутины #память #оптимизация #профилирование

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

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

    habr.com/ru/companies/ozonbank

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

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

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

    habr.com/ru/companies/yadro/ar

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

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

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

    habr.com/ru/articles/896940/

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

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

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

    habr.com/ru/companies/ruvds/ar

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

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

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

    habr.com/ru/companies/otus/art

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

  10. Корутины: stackful vs stackless

    В этой статье я хочу объяснить разницу между stackless и stackful корутинами: чем они отличаются, какие у них плюсы и минусы, а также в общих чертах рассказать, как в некоторых языках программирования реализована многопоточность. Я стараюсь писать статьи простым и понятным языком, чтобы их мог понять как можно больший круг читателей. Поэтому в тексте будут сделаны упрощения.

    habr.com/ru/articles/850970/

    #корутины #stackles #stackfull #fibres #green_thread #зеленые_треды #многопоточность #async/await #горутины #go

  11. Рецензия на книгу «100 ошибок в Go и как их избежать» Тейва Харшани

    Привет! Меня зовут Макс, я Go-разработчик в IT-компании SimbirSoft. Хочу поделиться своим отзывом на книгу «100 ошибок в Go и как их избежать» Тейва Харшани. Книга заинтересовала меня тем, что автор фокусирует свое внимание на ошибках, как распространенных, так и более редких. Читать далее⚡

    habr.com/ru/companies/simbirso

    #книга #рецензия #обзор_книги #go #потоки #пул #itинфраструктура #горутины

  12. Оптимизация Go: как повысить скорость и эффективность кода

    Привет, Хабр! Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность , он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт. Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное. Мы начинаем!

    habr.com/ru/companies/simbirso

    #go #golang #горутины #пул #потоки #itинфраструктура

  13. Суслик и пингвин: кодим на Go под Linux

    Язык ядра Linux, его модулей и утилит написаны на языке C. Хоть он и является старым языком и прародителем многих других, но его до сих пор используют. В экосистему линукса постепенно проникают и более молодые языки — например, Rust. Но сегодня мы поговорим об детище Google — GoLang. Я много пишу про этот замечательный язык и в этой статье предлагаю изучить основы системного программирования на Go, мы изучим как работать с ядром, юзерспейсом линукса. Расскажу об стандарте POSIX, а также узнаем, как сочетать C и Go-код.

    habr.com/ru/articles/811587/

    #асинхронность #корутины #горутины #сопрограммы #open_source #linux #go #golang #низкоуровневое_программирование #мультипоточность #параллельность #C #C++

  14. Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go

    Эта статья основана на истории об одном личном челлендже. Задача звучала так: помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось IPC для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях стояло использование чистого С. Другие языки, включая С++ и Go, не рассматривались. В итоге я получил интересный опыт в рамках системного и параллельного программирования. Меня зовут Алексей Буреев, я работаю старшим инженером по разработке ПО в YADRO, сейчас мой основной рабочий язык программирования — Golang. В этой статье я проведу небольшой эксперимент: покажу, как можно решить одну задачу с помощью разных языков программирования. Языку С я противопоставлю Go, в основе которого есть исторические наработки проектирования языка С. Для этого немного заглянем «под капот» стандартных типов данных, которые уже были заботливо созданы для нас разработчиками языка. Всех заинтересованных прошу под кат.

    habr.com/ru/companies/yadro/ar

    #go #язык_с #мьютексы #горутины #потоки #пул_потоков #сравнение #языки_программирования #eventdriven