golang select chan实现任务优先级编排!!!

w570955342 · 2020-12-11 23:32:39 · 1907 次点击
buscoop
纸上得来终觉浅,绝知此事要躬行!

什么不安全啊?我说是代码不完整 :smile:

#4
更多评论

我有用过类似的情景,但我是这样写的。

for {
            // 优先管理连接
            select {
            // add conn
            case ic := <-bNode.addConnChan:
                bNode.Connections[ic.GetUuid()] = ic
                bNode.clientSize++
            // conn leave
            case key := <-bNode.delConnChan:
                delete(bNode.Connections, key)
                bNode.clientSize--
            default:
                select {
                case pkg := <-bNode.onMessage:
                    if pkg == nil {
                        // stop Serve
                        _ = bNode.Destroy()
                        return
                    }
                    bNode.allMessages = append(bNode.allMessages, pkg)
                    bNode.broadcast(pkg)
                default:
                    time.Sleep(time.Millisecond * 50)
                }
            }
        }
#1
buscoop
纸上得来终觉浅,绝知此事要躬行!

这个不全,谁知道你写得什么

#2