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

0
0

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程