Repolode
sourcegraph

sourcegraph/conc

wait group, 제한된 풀, 순서가 보장되는 스트림, 패닉 전파를 제공해 구조적 동시성을 더 안전하고 간편하게 구현하는 Go 라이브러리입니다.

스타
10,435
포크
366
열린 이슈
33
마지막 커밋
2개월 전

어떤 프로젝트인가요?

conc는 흔히 쓰이는 동시성 패턴을 스코프가 명확하고 읽기 쉬운 API로 감싼 Go 패키지입니다. 모든 고루틴은 conc.WaitGroup이 소유하므로, 방치하지 않고 소유자가 종료를 기다려야 합니다.

이 패키지는 생성된 고루틴에서 발생한 패닉을 잡아, Wait()를 호출한 고루틴에서 다시 발생시키며 자식 고루틴의 스택 트레이스도 함께 제공합니다. 덕분에 일반 go 문만 사용할 때 필요한 recover 후 전달하는 상용구 코드를 작성하지 않아도 됩니다.

conc는 wait group을 기반으로 제한된 워커 풀, 결과나 오류를 수집하는 풀, context를 취소하는 풀, 순서가 보장되는 스트림 처리기, 슬라이스용 동시 Map 및 ForEach 헬퍼를 제공합니다.

핵심 기능

  • 01생성한 고루틴을 소유하고 종료될 때까지 기다리는 WaitGroup입니다.
  • 02자식 고루틴의 패닉을 Wait() 호출 시 자식의 스택 트레이스와 함께 다시 발생시킵니다.
  • 03WithMaxGoroutines로 설정하는 고루틴 수 제한 풀입니다.
  • 04결과나 오류를 수집하며, 선택적으로 첫 오류 발생 시 context를 취소하는 풀입니다.
  • 05태스크는 병렬로 실행하고 콜백은 순차적으로 호출하는 순서 보장 스트림 처리입니다.
  • 06슬라이스에서 iter.Map과 iter.ForEach를 동시 실행합니다.

활용 사례

  • 고루틴에서 발생한 패닉이 프로세스를 조용히 중단시키지 않도록 서비스의 sync.WaitGroup을 대체할 때.
  • 동시 실행 고루틴 수를 상한으로 제한해 여러 태스크를 실행할 때.
  • 직접 워커 루프를 작성하지 않고 슬라이스를 동시 매핑하거나 순회할 때.
  • 출력 순서를 유지하면서 순서가 있는 스트림을 병렬 처리할 때.

빠른 시작

  1. 1

    라이브러리를 Go 모듈에 추가하세요

    go get github.com/sourcegraph/conc

사용 전 알아둘 점

  • README에 따르면 이 패키지는 아직 1.0 이전 버전이므로 1.0에 도달하기 전에 사소한 호환성 변경이 있을 수 있습니다.

토픽

자주 묻는 질문

conc은(는) 무엇인가요?
wait group, 제한된 풀, 순서가 보장되는 스트림, 패닉 전파를 제공해 구조적 동시성을 더 안전하고 간편하게 구현하는 Go 라이브러리입니다. conc는 흔히 쓰이는 동시성 패턴을 스코프가 명확하고 읽기 쉬운 API로 감싼 Go 패키지입니다. 모든 고루틴은 conc.WaitGroup이 소유하므로, 방치하지 않고 소유자가 종료를 기다려야 합니다.
conc은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
conc은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
conc은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. conc의 마지막 커밋은 2026년 9월 1일입니다.
conc은(는) 어디에 사용할 수 있나요?
고루틴에서 발생한 패닉이 프로세스를 조용히 중단시키지 않도록 서비스의 sync.WaitGroup을 대체할 때. 동시 실행 고루틴 수를 상한으로 제한해 여러 태스크를 실행할 때. 직접 워커 루프를 작성하지 않고 슬라이스를 동시 매핑하거나 순회할 때. 출력 순서를 유지하면서 순서가 있는 스트림을 병렬 처리할 때.
conc는 어떻게 설치하나요?
라이브러리를 Go 모듈에 추가하세요: go get github.com/sourcegraph/conc
conc은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/sourcegraph/conc

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트