請問 creatework中 for循環的生命週期
来源:16-2 简单调度器

augustine96
2019-01-01
請問
func createWorker(out chan ParseResult, s Scheduler) {
in := make(chan Request)
go func() {
for {
// tell scheduler i am ready
s.WorkerReady(in)
request := <-in
result, err := worker(request)
if err != nil {
continue
}
out <- result
}
}()
}
代碼中 go func 中的 for循環 何時 生命週期會結束
写回答
1回答
-
ccmouse
2019-01-07
这个for循环永远不会结束。但因为他是在一个go func的函数体里面,go func会开一个goroutine,他会和main并发执行。
所以,这个createWorker执行非常快,只是创建了一个goroutine,然后立刻返回。而这个goroutine就会一直运行下去,直到整个程序退出,也就是main函数运行结束。
当然,我们如果想让这个goroutine退出的话,也可以给他一个特殊的退出channel,他在for里面如果从退出channel收到东西,就break出来。比如:
exitChan := make(chan bool)
go func(chan bool){
...
}(exitChan)
00
相似问题