Concurrency

Один поток и событийный цикл: откуда у Redis скорость

Один поток и событийный цикл: откуда у Redis скорость

Redis обрабатывает команды в одном потоке — и при этом отдаёт сотни тысяч операций в секунду. Разбираем, почему single-threaded не значит медленно: событийный цикл, I/O-мультиплексирование, threaded I/O в новых версиях, пайплайнинг. И честно про обратную сторону: где один поток становится узким местом и откуда берётся хвостовая latency.

Goroutine leak profile в Go 1.27: ловим утечки горутин в проде

Goroutine leak profile в Go 1.27: ловим утечки горутин в проде

Go 1.27 добавил профиль утёкших горутин — он выделяет именно те, что навсегда заблокированы на примитиве синхронизации. Что новый профиль видит, чего не видят pprof/goroutine и goleak, на воспроизводимых классах утечек, и как встроить его в мониторинг.

Flaky-тесты: почему мигают и как чинить

Flaky-тесты: почему мигают и как чинить

Flaky-тест не «случайный» — у каждого мигания детерминированная причина: гонка, время, порядок выполнения, обход map, sleep вместо синхронизации. Разбираем пять классов на живом Go-стенде с реальной частотой мигания и настоящим детектором гонок, чиним каждый детерминизмом — а не ретраями

Отладка конкурентности в Go: race detector, утечки горутин, дедлоки

Отладка конкурентности в Go: race detector, утечки горутин, дедлоки

Как ловить конкурентные баги в Go: race detector по-настоящему (как читать отчёт, оверхед, место в CI), поиск утечек горутин через goleak и pprof, дедлоки и встроенный детектор, профили блокировок и мьютексов

Модель памяти Go: happens-before и почему гонки — это не «иногда»

Модель памяти Go: happens-before и почему гонки — это не «иногда»

Что на самом деле гарантирует модель памяти Go: отношение happens-before, публикация данных через каналы, мьютексы и атомики, переупорядочивание операций и почему гонка данных делает программу некорректной — модель памяти перестаёт давать нужные гарантии, а не просто «изредка возвращает неверное значение»

Конкурентность в Go: горутины, каналы и context без подводных камней

Конкурентность в Go: горутины, каналы и context без подводных камней

Как в Go на самом деле устроена конкурентность: дешёвые горутины и M:N-планировщик, каналы против мьютексов, context для отмены, рабочие паттерны (worker pool, fan-in/out, pipeline) и типичные подводные камни — гонки, утечки горутин и дедлоки