为了账号安全,请及时绑定邮箱和手机立即绑定

从Go渠道获得价值

从Go渠道获得价值

Go
GCT1015 2021-05-13 13:15:14
我有一个例程,它正在侦听TCP连接并将其通过通道发送回主循环。我在例行程序中执行此操作的原因是使此侦听无阻塞并能够同时处理活动连接。我已经使用带有空默认情况的select语句实现了此操作,如下所示:go pollTcpConnections(listener, rawConnections)for {    // Check for new connections (non-blocking)    select {    case tcpConn := <-rawConnections:        currentCon := NewClientConnection()        pendingConnections.PushBack(currentCon)        fmt.Println(currentCon)        go currentCon.Routine(tcpConn)    default:    }   // ... handle active connections}这是我的pollTcpConnections例程:func pollTcpConnections(listener net.Listener, rawConnections chan net.Conn) {  for {    conn, err := listener.Accept()  // this blocks, afaik    if(err != nil) {        checkError(err)    }    fmt.Println("New connection")    rawConnections<-conn  }}问题是我从来没有收到这些联系。如果我以阻止方式进行操作,如下所示:for {    tcpConn := <-rawConnections// ...}我收到了连接,但是阻塞了……我也尝试过缓冲通道,但是发生了同样的事情。我在这里想念什么?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信