```
for {
rw, e := l.Accept() // 取出一个连接,对应accept
if e != nil {
if ne, ok := e.(net.Error); ok && ne.Temporary() {
if tempDelay == 0 {
tempDelay = 5 * time.Millisecond
} else {
tempDelay *= 2
}
if max := 1 * time.Second; tempDelay > max {
tempDelay = max
}
srv.logf("http: Accept error: %v; retrying in %v", e, tempDelay)
time.Sleep(tempDelay)
continue
}
return e
}
tempDelay = 0
c := srv.newConn(rw)
c.setState(c.rwc, StateNew) // before Serve can return
go c.serve(ctx)
}
```
golang自带的http库,对每一个连接的客户端都起一个go,到一定规模岂不是很没有效率?
感觉这边做一个go pool来缓解大规模的创建、销毁和协程切换
有疑问加站长微信联系(非本文作者)