golang for select break问题
2023-06-20 本文已影响0人
frank3
请看下面的写法正确吗?
for {
select {
case msg := <-msgsChan:
msgs = append(msgs, qtmsg)
default:
break
}
}
如果没有msg消息,这个break不会从for退出,就会出现死循cpu就上来了,正确的写法应该是
for loop:=true; loop {
select {
case <-msg:
// do your task here
case <-ctx.Done():
loop = false
break
}
}