func funcName(){
//TODO
}
for {
if v,ok := <-chan;ok{
go funcName()
}else{
break
}
}
假如chan管道中的数据长度为N,能否如上代码创建N个协程来处理。
还是需要像其他语言一下,创建指定数量的协程来处理。
func funcName(){
//TODO
}
for {
if v,ok := <-chan;ok{
go funcName()
}else{
break
}
}
假如chan管道中的数据长度为N,能否如上代码创建N个协程来处理。
还是需要像其他语言一下,创建指定数量的协程来处理。
go http 源包里面有如下结构
func (srv *Server) Serve(l net.Listener) error {
defer l.Close()
...
for {
rw, e := l.Accept()
...
go c.serve(ctx)
}
}
详细:https://github.com/golang/go/...
在 Go 调度器加持下,每个新请求它就会开一个 goroutine 去处理,非常简单粗暴。但资源(cpu、memory)是有限的,适当的限制协程数量也不是不行的。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答893 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.1k 阅读
这个,机器资源(比如内存)够就行。不够用了就得想办法限制。
够不够用,得实测 ...