Go 동시성을 빠르게 복습하는 미니북으로, 고루틴과 채널부터 동기화, 테스트, 운영 진단까지 코드 수정과 실행이 가능한 예제로 정리함 채널과 select 로 데이터 전달, 완료 알림, 취소, 파이프라인을 구성하고, 타이머와 context로 시간 제한과 작업 취소를 다룸 데이터 경쟁과 경쟁 조건은 서로 다름: 개별 연산이 동시성 안전해도 실행 순서에 따라 잘못된 상태가 생길 수 있으며, Go 경쟁 탐지기는 이런 경쟁 조건까지 찾아내지는 못함 동기화 도구는 목적에 맞게 선택해야 함: WaitGroup은 완료 대기, 뮤텍스는 공유 데이터와 복합 연산 보호, Once는 한 번 실행, Pool은 메모리 재사용을 담당함 synctest와 런타임 진단 도구로 동시성 코드의 상태와 시간 의존 동작을 테스트하고, 메트릭/프로파일링/실행 추적으로 운영 환경의 문제를 분석할 수 있음 빠른 복습을 위한 대화형 미니북 입문서가 아닌 복습용 자료로, 각 주제의 코드를 바꾸고 Run을 눌러 실험할 수 있음 정적 예제를 담은 PDF 버전도 제공하며, AI를 사용하지 않고 제작한 책임 기초부터 실습하며 배우려는 독자에게는 Gist of Go: Concurrency를 안내함 고루틴과 실행 완료 대기 고루틴(goroutine) 은 go 키워드로 시작하는 함수이며, Go 런타임이 CPU 코어에서 실행되는 운영체제 스레드에 배분함 운영체제 스레드보다 가벼워 수백 개나 수천 개를 만들 수 있음 각 고루틴은 독립적이며, 프로그램 시작 시 암묵적으로 실행되는 main도 고루틴임 main이 끝나면 다른 고루틴도 종료됨 sync.WaitGroup 은 내부 카운터로 완료를 기다림 Add(n)은 카운터를 n만큼 늘리고, Done()은 1만큼 줄임 Wait()는 카운터가 0이 될 때까지 호출한 고루틴을 차단함 WaitGroup.Go는 카운터 증가, 고루틴 실행, 종료 시 카운터 감소를 한 번에 처리함 WaitGroup은 고루틴 자체를 추적하지 않으며, 모든 메서드를 여러 고루틴에서 안전하게 호출할 수 있음 일반적으로 Add를 모두 호출한 뒤 Wait를 호출하지만, 일부 Add를 다른 고루틴에서 Wait 이후 호출하는 구성도 가능함 여러 고루틴이 Wait를 호출하면 모두 카운터가 0이 될 때까지 기다림 채널의 전달, 종료, 방향과 버퍼 채널(channel) 은 고루틴 사이에서 값을 전달함 버퍼 없는 채널의 송신 ch <- val은 다른 고루틴이 <-ch...
Related
Show GN: 추천링크·UTM으로 오프라인 소개의 성과를 추적하는 구조
1 hour ago
3
소프트웨어 팩토리 패턴 시도하기
2 hours ago
3
Show GN: 웹 변경 모니터링하는 크롬 확장프로그램
2 hours ago
3
OpenAI, 확률·선택지·점수를 반환하는 Decisions API 공개 베타 시작
3 hours ago
3
제프리 카첸버그 - 세상이 바뀌고 있다: 창의성을 위한 AI
3 hours ago
3
이 모든 것이 지나간 뒤를 위한 지속 가능한 웹 커리어
3 hours ago
3
여러 팀의 시스템을 이해하기 위한 AI 집단 지성 구축하기
3 hours ago
3
Tips
click
Popular
프로들도 줄지어 샷 점검… KLPGA 스타 사랑방 된 더헤븐CC 연습장
2 weeks ago
73
iOS 27, iPadOS 27, macOS 27
3 weeks ago
69
손흥민 선제골 발판·골대 불운…LAFC, 7경기 만에 승리
3 weeks ago
65
영림원소프트랩, 나람 통합 ERP 구축…사료 제조·물류·회계 데이터 하나로
2 weeks ago
62
'이 악문' 김영범, 자유형 50m '대회 신기록' 금메달
2 weeks ago
55
© Clint IT 2026. All rights are reserved

1 week ago
19








English (US) ·