深入学习golang — channel
Serve(queue chan *Request) { for req := range queue { sem <- 1 go func(r *Request) { process(r) <-sem }(req) } } 至少,这样的代码不会让一个go的初学者不会迷糊,另外,从变量的作用域角度,也更符合常理一些。 在实际的C/C++编程中,我们倾向于工作线程在一开始就创建好,而且线程的数量也是固定的。在go中,我们也可以这样做: func handle(queue chan *Request) { for r := range queue { process(r) } } func Serve(clientRequests chan *Request, quit chan bool...阅读全文