IT-개발,DB

go 채널을 사용하는 좋은 예제

SB리치퍼슨 2021. 8. 19. 17:18

go channel을 사용하는 좋은 예제

이 코드에서는 go channel을 exit할 수 있는 예제가 포함되어 있습니다.
기본적인 예제 중 select 문을 사용해서 채널값을 받게 되면 루틴을 종료하는 예제입니다.
이 기본 go channel을 사용하는 design pattern 만 알고 있으면 대부분을 고 채널을 사용할 때 응용할 수 있습니다.

var quit chan struct{}

func startLoop() {
    quit := make(chan struct{})
    go loop()
}

func stopLoop() {
    // As mentioned by Kaedys
    //close(quit)
    // permits signalling everyone havins such a `case <-quit:`
    // statement to be stopped at once, which might be even better.
    quit <- struct{}{}
}

// BTW, you cannot call your function main, it is reserved
func loop() {
    for {
        select {
        case <-quit:
            return # better than break
        default:
            // do stuff. I'd call a function, for clarity:
            do_stuff()
        }
    }
}

go channel

반응형