美文网首页
golang for select break问题

golang for select break问题

作者: frank3 | 来源:发表于2023-06-20 16:00 被阅读0次

请看下面的写法正确吗?

           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
    }
}

参考:
Does a break statement break from a switch/select?

相关文章

  • select I/O多路复用

    select golang的并发模型和linux select类似golang提供了select关键字,实现I/O...

  • break in select will not break t

    背景 后台广告系统匹配由串行转为并行,涉及到并发数控制和一些资源回收工作,利用channel去做非常容易实现。细节...

  • 【golang】select{}中break的易错点

    一个select语句用来选择哪个case中的发送或接收操作可以被立即执行。它类似于switch语句,但是它的cas...

  • Shell 循环语句(五) break 语句

    break 语句用于从 for、while、until 或 select 循环中退出,以停止循环的执行。break...

  • Go语言常用代码笔记(持续更新)

    ?循环读取Channel内容 ?golang 的 select 的功能和 select, poll, epoll ...

  • Golang并发模型:select进阶

    特性 nil的通道永远阻塞,即不执行。 break跳出for? select{}阻塞。 select应用场景 无阻...

  • golang select

    使用场景 监控事件 读取事件 写入事件 } PS:注意select语句如果做监听使用的话,尽量嵌套在for循环中,...

  • Go select

    通过select语句可以监听channel上的数据流动 Golang的select语句类似于UNIX的select...

  • select用法

    golang 的 select 的功能和select, poll, epoll相似, 就是监听 IO 操作,当 I...

  • Shell 逻辑控制

    逻辑控制 条件 if 分支 case、select 循环 for、while、until break 和 cont...

网友评论

      本文标题:golang for select break问题

      本文链接:https://www.haomeiwen.com/subject/kigyydtx.html