Repolode
sourcegraph

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. 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 обновляется ежедневно.

Похожие проекты