采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
里面用go routine来执行删除动作,动作结束后才会把err写到errMap中。但是启动启动go routine后外面的程序已经直接往下执行了,都最后读取errMap的时候之前启动的那些go routine可能没有执行完,这样就拿不到所有的err?
不会,那个函数里面有这样一行
forloop: for { select { case vid :=<- dc: log.Printf("Data in executor: %v", vid)
for是个阻塞的死循环,只有在下面break之后才会跳出,因此整个函数会被block住直到跳出,不存在goroutine延迟结束导致的race condition
登录后可查看更多问答,登录/注册
从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能
1.8k 13
1.8k 8
1.9k 7
1.2k 7
2.4k 7
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号