메인 이벤트 루프를 막지 않고 CPU 집약적 작업을 실행하는 Node.js 워커 스레드 풀로, 큐와 취소 기능, 실행 통계를 제공합니다.
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
라이브러리를 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 통계는 매일 갱신됩니다.
관련 프로젝트
스케줄링, 재시도, 우선순위 큐와 웹 UI를 지원하는 Redis 기반 분산 작업 큐용 Go 라이브러리입니다.
비용 기반 퇴출과 TinyLFU 입장 정책을 갖춘, 빠르고 동시성 높은 Go용 메모리 제한 캐시 라이브러리입니다.
GC 오버헤드를 낮게 유지하면서 힙에 많은 항목을 저장하는 빠른 Go용 동시성 지원 퇴거형 인메모리 캐시입니다.
lodash에서 영감을 받은, 문자열·슬라이스·날짜/시간·네트워킹·암호화 등을 위한 700개 이상의 재사용 가능한 Go 유틸리티 함수 라이브러리입니다.
Google의 핵심 Java 라이브러리로, multimap과 multiset 같은 컬렉션, 그래프 구조, 동시성·I/O·해싱·문자열 유틸리티를 제공합니다.