VideoClearExcutor的实现是否会出现并发问题?
来源:5-5 task示例的实现
lprince
2018-09-18
里面用go routine来执行删除动作,动作结束后才会把err写到errMap中。但是启动启动go routine后外面的程序已经直接往下执行了,都最后读取errMap的时候之前启动的那些go routine可能没有执行完,这样就拿不到所有的err?
写回答
1回答
-
艾文西
2018-10-11
不会,那个函数里面有这样一行
forloop: for { select { case vid :=<- dc: log.Printf("Data in executor: %v", vid)for是个阻塞的死循环,只有在下面break之后才会跳出,因此整个函数会被block住直到跳出,不存在goroutine延迟结束导致的race condition
00
相似问题