从另一个goroutine开始goroutine的意义是什么?
从中,我不理解为什么函数startWorker的编写方式如下所示:从另一个goroutine开始goroutine的意义是什么?,go,Go,从中,我不理解为什么函数startWorker的编写方式如下所示: func (p *WorkerPool) dispatch() { for i := 0; i < p.maxWorkers; i++ { p.taskQueue[i] = make(chan func()) go startWorker(p.taskQueue[i]) } } func(p*WorkerPool)分派(){ 对于i:=0;i
func (p *WorkerPool) dispatch() {
for i := 0; i < p.maxWorkers; i++ {
p.taskQueue[i] = make(chan func())
go startWorker(p.taskQueue[i])
}
}
func(p*WorkerPool)分派(){
对于i:=0;i
func startWorker(taskChan-func()){
go func(){
var task func()
var ok bool
为了{
task,ok=根据Francesc Campoy Flores的说法,你的说法是正确的。开始一个goroutine,同时开始另一个goroutine是多余的
func(p*WorkerPool)分派(){
对于i:=0;i
这就是它在库中的使用方式。删除startWorker中的go例程是有意义的
正如Peter在这里提到的,将go startWorker()
行更改为startWorker()也是可以的
你应该先重新缩进你的代码。鉴于startWorker
只从go语句中调用,没有必要startWorker
也启动一个goroutine。go funct
用于同时执行类似的工作。它使程序的运行时间更快。@Anshu:不,它不使运行时间更快。@time很快。如果有什么区别的话,它会使运行时间变慢。它所做的是并发运行。按照惯例,名为Start或StartX的方法不会阻塞。例如,请参阅或。我宁愿在调用站点删除go语句。因为这是一种内部用法,所以也可以。我想没有对错的方法。这是我们构建cod的方式E