Пул потоков-воркеров для Node.js, который выносит ресурсоёмкие вычисления из основного цикла событий и поддерживает очереди, отмену задач и статистику выполнения.
sourcegraph/conc
Библиотека Go, которая делает структурированную конкурентность безопаснее и проще: группы ожидания, ограниченные пулы, упорядоченные потоки и передача паник.
- Звёзды
- 10,435
- Форки
- 366
- Открытые issues
- 33
- Последний коммит
- 2 месяца назад
Что это?
conc — пакет Go, который объединяет распространённые шаблоны конкурентности в API с областью действия, упрощая чтение кода. Каждая горутина принадлежит conc.WaitGroup, поэтому её владелец отвечает за ожидание завершения, а не оставляет её работать без контроля.
Пакет обрабатывает паники в запущенных горутинах: перехватывает их и повторно вызывает в горутине, которая вызывает Wait(), прикладывая стек вызовов дочерней горутины. Благодаря этому не нужен шаблонный код с recover и передачей паники, который требуется при использовании обычного оператора go.
Помимо группы ожидания, conc предлагает ограниченные пулы воркеров, пулы для сбора результатов или ошибок, пулы с отменой контекста, обработчик упорядоченных потоков, а также конкурентные функции Map и ForEach для срезов.
Ключевые возможности
- 01WaitGroup, которая владеет запущенными горутинами и дожидается их завершения.
- 02Паники в дочерних горутинах повторно вызываются при Wait() с приложенным стеком вызовов дочерней горутины.
- 03Пулы горутин с ограничением, настраиваемым через WithMaxGoroutines.
- 04Пулы для сбора результатов или ошибок, с возможностью отменить контекст при первой ошибке.
- 05Обработка упорядоченных потоков параллельными задачами и последовательными колбэками.
- 06Конкурентные iter.Map и iter.ForEach для срезов.
Сценарии использования
- Замена sync.WaitGroup в сервисах, где паника в горутине не должна незаметно приводить к сбою процесса.
- Запуск набора задач с фиксированным верхним пределом числа одновременно работающих горутин.
- Конкурентное применение Map или итерация по срезу без написания циклов воркеров вручную.
- Параллельная обработка упорядоченного потока с сохранением порядка результатов.
Быстрый старт
- 1
Добавьте библиотеку в модуль Go
go get github.com/sourcegraph/conc
Что важно знать
- Согласно README, пакет ещё не достиг версии 1.0, поэтому до её выхода возможны небольшие несовместимые изменения.
Темы
Частые вопросы
- Что такое conc?
- Библиотека Go, которая делает структурированную конкурентность безопаснее и проще: группы ожидания, ограниченные пулы, упорядоченные потоки и передача паник. conc — пакет Go, который объединяет распространённые шаблоны конкурентности в API с областью действия, упрощая чтение кода. Каждая горутина принадлежит conc.WaitGroup, поэтому её владелец отвечает за ожидание завершения, а не оставляет её работать без контроля.
- conc можно использовать бесплатно? Какая у него лицензия?
- conc распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- conc всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в conc — 1 сент. 2026 г..
- Для чего можно использовать conc?
- Замена sync.WaitGroup в сервисах, где паника в горутине не должна незаметно приводить к сбою процесса. Запуск набора задач с фиксированным верхним пределом числа одновременно работающих горутин. Конкурентное применение Map или итерация по срезу без написания циклов воркеров вручную. Параллельная обработка упорядоченного потока с сохранением порядка результатов.
- Как установить conc?
- Добавьте библиотеку в модуль Go: go get github.com/sourcegraph/conc
- Где скачать conc?
- Исходный код и инструкции по установке — на GitHub: https://github.com/sourcegraph/conc
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Библиотека Go для распределённых очередей задач на базе Redis с планированием, повторами, приоритетами и веб-интерфейсом.
Быстрая конкурентная библиотека кеширования для Go с ограничением по памяти, вытеснением по стоимости и допуском записей с помощью TinyLFU.
Быстрый конкурентный in-memory кэш с вытеснением для Go: хранит множество записей в куче и снижает нагрузку на GC.
Библиотека утилит для Go: более 700 вспомогательных функций для строк, срезов, дат и времени, сетей, криптографии и многого другого, вдохновлённая lodash.
Основные Java-библиотеки Google: мультимапы, мультимножества, графы и утилиты для конкурентности, ввода-вывода, хеширования и строк.