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
반응형
'IT-개발,DB' 카테고리의 다른 글
go lang convert struct to interface{} (0) | 2021.08.31 |
---|---|
Go 루틴 (goroutine) (0) | 2021.08.23 |
[SQL/Error] (1452): Cannot add or update a child row: a foreign key constraint fails (0) | 2021.08.17 |
Github Token, 소스트리와 연동 (0) | 2021.07.29 |
MYSQL TABLE 변경하기 DDL (0) | 2021.07.22 |
댓글