Golang에서 동시에 여러 채널 읽기
Golang의 세계에 입문하면서 Any-to를 만드는 작업에 직면할 수 있습니다. -여러 고루틴이 단일 대상에 공급되는 하나의 채널. 이 기사에서는 Golang에서 이를 달성하기 위한 전략을 탐구할 것입니다.
예제 시나리오
두 개의 고루틴 numgen1 및 numgen2가 동시에 숫자를 생성하고 이를 작성하는 시나리오를 생각해 보세요. 채널 num1과 num2입니다. 목표는 num1과 num2에서 받은 숫자를 합산하고 그 결과를 채널 합계에 기록하는 별도의 프로세스인 addnum을 만드는 것입니다.
Select 문 사용
여러 채널에서 동시에 읽으려면 select 문을 활용할 수 있습니다. 선택 블록 내에서 각 케이스는 읽으려는 채널을 나타냅니다. 메시지를 받은 첫 번째 사례는 해당 코드 블록을 실행합니다.
다음은 select 문을 사용하는 예입니다.
func main() { c1 := make(chan int) c2 := make(chan int) out := make(chan int) go func(in1, in2 <-chan int, out chan<- int) { for { sum := 0 select { case sum = <-in1: sum += <-in2 case sum = <-in2: sum += <-in1 } out <- sum } }(c1, c2, out) }
이 goroutine은 무기한 실행되며 채널에서 값을 지속적으로 읽고 합산합니다. c1과 c2. 출력 채널은 합계를 소비하는 수단을 제공합니다. 고루틴을 종료하려면 c1과 c2를 모두 닫은 다음 종료하기 전에 닫아야 합니다.
위 내용은 Golang에서 여러 채널을 동시에 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!