老师你好,我有2个问题
来源:11-2 使用Channel等待任务结束

_cp
2020-06-08
1.为什么go func 里要用for,和不用for有什么区别
go func() {
for {
doWork(id, w.in, w.done)
//fmt.Printf(“worker %d received %c\n”, id, <-c)
}
}()
2.done <- true 这为啥叫做发送;<-worker.done接收后,为什么goroutine就可以结束
写回答
1回答
-
用for是不断做doWork的意思。不然只做一次就不再做其它任务了。
done<-true就是给done这个channel发送true这个值的意思。那么看接收方,<-worker.done表示从worker.done接收一个值,收到的值我们没有赋值给任何变量。但是在接收的时候,会等待发送方发送。必须等到worker运行到done<-true这一行,才会接收到。这样就通过channel实现了等待任务完成这个能力。
012020-06-10
相似问题