Go동시성 3

Go 언어 select 문 정리: 여러 channel을 동시에 다루는 방법

channel까지 이해했다면, 이제 Go 동시성의 흐름을 실제로 제어하는select 문을 살펴볼 차례다.goroutine과 channel을 사용하다 보면“여러 channel 중 하나라도 준비되면 처리하고 싶다”는 상황이 자연스럽게 등장한다.이때 사용하는 문법이 바로 select다.이 글에서는select 문이 어떤 역할을 하는지동작 방식과 기본 규칙실무에서 자주 사용하는 패턴을 중심으로 정리한다.select 문이 필요한 이유channel 하나만 다룰 때는 하지만 channel이 여러 개라면 이야기가 달라진다.// 이런 상황은 불가능하다if 여러 channel을 동시에 기다리기 위해Go는 select라는 전용 문법을 제공한다.select 기본 구조select {case v := 준비된 case 하나만 실행실..

backend 2026.01.18

Go 언어 channel 기초: goroutine 간 통신과 동기화 방법

goroutine의 개념을 이해했다면, 이제 거의 항상 함께 사용되는channel을 다룰 차례다.goroutine이 “동시에 실행되는 작업 단위”라면,channel은 그 작업들 사이를 연결하는 통로에 해당한다.Go에서는 공유 메모리보다 메시지 전달을 우선하는 방식으로 동시성을 설계한다.이 글에서는channel의 기본 개념송수신 방식과 동작 특성실제로 자주 사용하는 패턴을 중심으로 정리한다.channel이란 무엇인가channel은 값을 주고받기 위한 통로다.ch := make(chan int)chan 타입 형태로 선언같은 타입의 값만 송수신 가능goroutine 간에 값을 안전하게 전달하기 위한 수단이며,락(lock)을 직접 다루지 않아도 동기화를 가능하게 해준다.[이미지: Go channel 기본 구조]..

backend 2026.01.17

Go 언어 goroutine과 동시성 기초: 병렬 처리의 기본 단위 이해하기

defer까지 이해했다면, 이제 Go를 선택하는 가장 큰 이유 중 하나인동시성(concurrency) 을 다룰 차례다.Go의 동시성은 복잡한 스레드 제어 대신goroutine과 channel이라는 비교적 단순한 개념을 중심으로 설계되어 있다.문법은 간단하지만, 개념을 제대로 이해하지 않으면 예상치 못한 동작을 만들기 쉽다.이 글에서는goroutine이 무엇인지어떻게 실행되고 관리되는지실제로 써보면서 느끼는 특징을 중심으로 정리한다.goroutine이란 무엇인가goroutine은 Go에서 제공하는 경량 스레드(lightweight thread) 다.go doWork()go 키워드를 붙이면 새로운 goroutine에서 함수가 실행된다함수 호출 자체는 즉시 반환된다이 한 줄로 동시 실행이 가능해진다는 점이Go..

backend 2026.01.16