home.social

#конкурентность — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #конкурентность, aggregated by home.social.

  1. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  2. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  3. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  4. Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

    Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

    #go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

  5. Разбор threading vs multiprocessing vs asyncio в Python

    При работе с Python да и другими языками программирования часто возникает необходимость ускорения выполнения кода, масштабирования обработки данных или работы с большим количеством сетевых запросов. Именно в Python для решения этих задач существуют три базовых метода. Это: threading, multiprocessing и asyncio. На первый взгляд – механизмы схожие. Но при детальном разборе ясно, что они решают принципиально разные задачи, опираются на разные модели исполнения и обладают своими ограничениями. В статье расскажу об особенностях каждого метода – будет интересно и познавательно.

    habr.com/ru/articles/991478/

    #threading #multiprocessing #asyncio #Python #параллельность #конкурентность #CPUbound #event_loop #многопоточность

  6. Разбор threading vs multiprocessing vs asyncio в Python

    При работе с Python да и другими языками программирования часто возникает необходимость ускорения выполнения кода, масштабирования обработки данных или работы с большим количеством сетевых запросов. Именно в Python для решения этих задач существуют три базовых метода. Это: threading, multiprocessing и asyncio. На первый взгляд – механизмы схожие. Но при детальном разборе ясно, что они решают принципиально разные задачи, опираются на разные модели исполнения и обладают своими ограничениями. В статье расскажу об особенностях каждого метода – будет интересно и познавательно.

    habr.com/ru/articles/991478/

    #threading #multiprocessing #asyncio #Python #параллельность #конкурентность #CPUbound #event_loop #многопоточность

  7. Разбор threading vs multiprocessing vs asyncio в Python

    При работе с Python да и другими языками программирования часто возникает необходимость ускорения выполнения кода, масштабирования обработки данных или работы с большим количеством сетевых запросов. Именно в Python для решения этих задач существуют три базовых метода. Это: threading, multiprocessing и asyncio. На первый взгляд – механизмы схожие. Но при детальном разборе ясно, что они решают принципиально разные задачи, опираются на разные модели исполнения и обладают своими ограничениями. В статье расскажу об особенностях каждого метода – будет интересно и познавательно.

    habr.com/ru/articles/991478/

    #threading #multiprocessing #asyncio #Python #параллельность #конкурентность #CPUbound #event_loop #многопоточность

  8. Разбор threading vs multiprocessing vs asyncio в Python

    При работе с Python да и другими языками программирования часто возникает необходимость ускорения выполнения кода, масштабирования обработки данных или работы с большим количеством сетевых запросов. Именно в Python для решения этих задач существуют три базовых метода. Это: threading, multiprocessing и asyncio. На первый взгляд – механизмы схожие. Но при детальном разборе ясно, что они решают принципиально разные задачи, опираются на разные модели исполнения и обладают своими ограничениями. В статье расскажу об особенностях каждого метода – будет интересно и познавательно.

    habr.com/ru/articles/991478/

    #threading #multiprocessing #asyncio #Python #параллельность #конкурентность #CPUbound #event_loop #многопоточность

  9. Книга: «Go на практике. 2-е изд.»

    Привет, Хаброжители! И так, вы освоили азы Go, что дальше? Чтобы создавать надежные и готовые к эксплуатации Go-приложения, вам нужно научиться реализовывать конкурентность, налаживать сетевые взаимодействия, получать доступ к файлам, использовать такие нативные протоколы передачи данных, как gRPC и TCP/REST, а также разбираться во множестве практических нюансов. В этой книге приводятся готовые решения, которые можно незамедлительно применить в повседневной работе.

    habr.com/ru/companies/piter/ar

    #go #рефлексия #генерация_кода #конкурентность #сетевые_взаимодействия #grpc #дженерики

  10. [Перевод] Честный взгляд на Go: сильные стороны и болезненные ограничения

    Команда Go for Devs подготовила перевод обзора языка Go от практикующего разработчика. Автор без прикрас разбирает сильные стороны Go — конкурентность, простоту и эргономику, — а затем подробно объясняет, почему его разочаровывают enum’ы, неизменяемость и модель ошибок.

    habr.com/ru/articles/984048/

    #go #golang #rust #backend #языки_программирования #конкурентность

  11. [Перевод] Python 3.14 без GIL: что это значит для веб-разработки

    Команда Python for Devs подготовила перевод статьи о том, как "free-threaded" Python меняет правила игры для веб-сервисов. Автор сравнивает Python 3.14 с GIL и без него на реальных ASGI и WSGI приложениях — и приходит к неожиданному выводу: несмотря на локальные просадки в производительности, "free-threaded" Python уже сейчас может упростить масштабирование и снизить накладные расходы.

    habr.com/ru/articles/967244/

    #Python #GIL #freethreading #вебсервисы #ASGI #WSGI #производительность #конкурентность #Granian #FastAPI

  12. [Перевод] Python 3.14 без GIL: что это значит для веб-разработки

    Команда Python for Devs подготовила перевод статьи о том, как "free-threaded" Python меняет правила игры для веб-сервисов. Автор сравнивает Python 3.14 с GIL и без него на реальных ASGI и WSGI приложениях — и приходит к неожиданному выводу: несмотря на локальные просадки в производительности, "free-threaded" Python уже сейчас может упростить масштабирование и снизить накладные расходы.

    habr.com/ru/articles/967244/

    #Python #GIL #freethreading #вебсервисы #ASGI #WSGI #производительность #конкурентность #Granian #FastAPI

  13. [Перевод] Python 3.14 без GIL: что это значит для веб-разработки

    Команда Python for Devs подготовила перевод статьи о том, как "free-threaded" Python меняет правила игры для веб-сервисов. Автор сравнивает Python 3.14 с GIL и без него на реальных ASGI и WSGI приложениях — и приходит к неожиданному выводу: несмотря на локальные просадки в производительности, "free-threaded" Python уже сейчас может упростить масштабирование и снизить накладные расходы.

    habr.com/ru/articles/967244/

    #Python #GIL #freethreading #вебсервисы #ASGI #WSGI #производительность #конкурентность #Granian #FastAPI

  14. [Перевод] Python 3.14 без GIL: что это значит для веб-разработки

    Команда Python for Devs подготовила перевод статьи о том, как "free-threaded" Python меняет правила игры для веб-сервисов. Автор сравнивает Python 3.14 с GIL и без него на реальных ASGI и WSGI приложениях — и приходит к неожиданному выводу: несмотря на локальные просадки в производительности, "free-threaded" Python уже сейчас может упростить масштабирование и снизить накладные расходы.

    habr.com/ru/articles/967244/

    #Python #GIL #freethreading #вебсервисы #ASGI #WSGI #производительность #конкурентность #Granian #FastAPI

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

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

    habr.com/ru/articles/953426/

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

  16. [Перевод] Почему асинхронный Python не такой популярный?

    Недавно на Youtube появилась документалка о Python . Примерно в середине ленты есть драматический эпизод о том, как переход от Python 2 к 3 разделил сообщество (спойлер: в конечном итоге этого не случилось ). Первые версии Python 3 (3.0-3.4) в основном делали упор на стабильность и упрощение перехода пользователей с версии 2.7. В 2015 была выпущена версия 3.5 с новой фичей: ключевыми словами async и await для выполнения корутин . Миновало десять лет и девять релизов, через считанные недели выпустят финальную версию Python 3.14. Пока все отвлеклись на фичи разноцветного REPL в 3.14, в release notes появились серьёзные заявления, связанные с конкурентностью и параллелизмом.

    habr.com/ru/articles/943878/

    #конкурентность #параллелизм #gil #async #await #asyncio

  17. Всё про BlockingCollection и фичи с ними

    Привет, Хабр! В .NET живёт старый, понятный инструмент для конкурентной обработки — BlockingCollection<T> . Коллекция, которая упрощает модель producer–consumer, даёт строгую ограниченную вместимость и предсказуемую блокировку при пустоте или переполнении. Да, у нас есть Channel<T> , есть TPL Dataflow, есть миллион самодельных очередей на SemaphoreSlim . Но когда нужны простые правила и железный backpressure без BlockingCollection по-прежнему закрывает задачи хорошо.

    habr.com/ru/companies/otus/art

    #c# #конкурентность #многопоточность #очередь_задач #параллелизм #управление_потоками #отказоустойчивость

  18. [Перевод] Как проверить время и асинхронный код в Go

    Команда Go for Devs подготовила перевод статьи о пакете synctest , который с Go 1.25 стал частью стандартной библиотеки. Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов.

    habr.com/ru/articles/943412/

    #go #golang #synctest #тестирование #конкурентность #асинхронность #горутина

  19. [Перевод] Как спроектировать потокобезопасный класс в Java

    Потокобезопасность — одна из самых сложных и часто недооцененных тем в программировании. Особенно для разработчиков, работающих с многозадачностью в Java, где ошибки синхронизации могут приводить к непредсказуемым последствиям. В этой статье мы разберемся, как создавать классы, безопасные для работы в многопоточной среде, и какие подходы помогут избежать гонок данных, оставив код не только эффективным, но и надежным. Поговорим о проблемах, которые поджидают разработчиков при неправильной синхронизации, и о том, как эти проблемы можно эффективно решить, опираясь на проверенные стратегии.

    habr.com/ru/companies/otus/art

    #java #Потокобезопасность #конкурентность #Многопоточность #производительности #потокобезопасный_класс #thread_safe

  20. [Перевод] ОС реального времени в эмуляторе Mario, или Как устроены потоки

    В своём предыдущем посте о потоках я привёл импровизированное сравнение 1 : Потоки 2 — это просто состояния сохранения 3 эмулятора 4 , связанные с условием, при котором продолжается их выполнение. В тот момент я подумал, что это неплохая аналогия, но не мог перестать размышлять о ней. Я какое-то время крутил её в голове. Мне кажется, что у этой аналогии есть серьёзный потенциал в качестве инструмента обучения. Поэтому я добавил многопоточность в Super Mario Bros. для NES.

    habr.com/ru/companies/ruvds/ar

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

  21. Многопоточность. Снизу вверх. Потоки в языке C#

    Привет, Хабр! Это Дмитрий Бахтенков. Добро пожаловать в третью часть цикла статей «Многопоточность. Снизу вверх»! Мы уже разобрали процессор и операционную систему , а сегодня поговорим про использование потоков в .NET с помощью языка программирования C#. Эта статья — обзор основных возможностей взаимодействия с потоками в .NET.

    habr.com/ru/companies/beeline_

    #многопоточность #потоки #управление_потоками #производительность_приложений #асинхронное_программирование #синхронизация_потоков #конкурентность

  22. Три необсуждаемых вопроса о параллельной распределённой обработке данных — чтобы жить стало легче

    В публикациях по распределённой параллельной обработке данных весьма редко разбираются сценарии отказа с точки зрения совместной работы воркеров и их влияния друг на друга. На примере решения несложного архитектурного кейса автор покажет, что ответов только на 3 вопроса при проектировании будет достаточно для обеспечения жёстких нефункциональных требований.

    habr.com/ru/articles/891744/

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

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

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

    habr.com/ru/companies/otus/art

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

  24. [Перевод] Сколько памяти нужно в 2024 году для выполнения миллиона конкурентных задач?

    Помните сравнение потребления памяти для асинхронного программирования на популярных языках 2023 года? Мне стало любопытно, как поменялась ситуация за один год на примере самых новых версий языков. Давайте снова проведём бенчмарки и изучим результаты!

    habr.com/ru/articles/862482/

    #graalvm #конкурентность #nodejs #бенчмарки #асинхронные_задачи

  25. [Перевод] Как правильно тестировать конкурентные структуры данных

    Есть потрясающая библиотека Rust под названием loom , которую можно использовать для тщательного тестирования неблокируемых (lock-free) структур данных. Я давно хотел разобраться, как она работает. И сейчас хочу! Но недавно я случайно реализовал небольшой эксперимент, который, как мне кажется, содержит часть идей loom , поэтому о нём стоит написать. Моя цель — не научить вас тому, что нужно использовать на практике (если вы хотите этого, то почитайте документацию loom ), а, скорее, вывести пару идей из фундаментальных принципов.

    habr.com/ru/companies/ruvds/ar

    #ruvds_переводы #конкурентность #параллельные_вычисления #параллелизм #concurrency #структуры_данных #тестирование