请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Channel等待任务结束

为什么在doWorker()方法中done<-true 后,再channelDemo中<- workers[i].done就可以time.Sleep(time.Microsecond)的作用

正在回答

1回答

因为channel的读写都是阻塞的。在从done收数据时,它会阻塞住,一直等到另一头往这个channel发送数据。而另一头也只有在任务结束后才会往done里面发东西。这就实现了等待任务结束的目的。

2 回复 有任何疑惑可以回复我~
  • 提问者 IT小书童z #1
    那没有time.Sleep(time.Microsecond)在main中,main为什么不会执行完了退出呢,main也被阻塞了么
    回复 有任何疑惑可以回复我~ 2018-08-01 01:09:58
  • ccmouse 回复 提问者 IT小书童z #2
    是的,main也会被channel阻塞
    回复 有任何疑惑可以回复我~ 2018-08-06 19:56:50
  • 提问者 IT小书童z #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-02-18 11:22:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信