在循环中添加等待个数

来源:6-2 使用Channel等待任务结束

qq_大号_hozACL

2021-06-21 08:48:11

如果预先不知道需要添加的个数,而在循环中添加的话 ,为什么会出现这样的错误呢?

http://img.mukewang.com/climg/60cfe16309d728d012800824.jpg

写回答

1回答

burningx

2021-06-21

在“worker.in <- 'a' + i”进行消费的时候会发生阻塞,在阻塞之前会获取一把锁,消费完之后会释放这个锁,但是在释放锁的时候并不知道等待个数,所以就发生死锁了,所以要在“worker.in <- 'a' + i”之前添加等待个数,所以应该改成。

​for i, worker := range workers {
wg.Add(1)
worker.in <- 'a' + i
}
for i, worker := range workers {
wg.Add(1)
worker.in <- 'A' + i
}


不知道我理解的对不对,望老师们指正。

0
hurningx
回复
hcmouse
hp dir="ltr">感谢cc老师的指正,忽略了WaitGroup的关系了。

h021-06-24
共2条回复

0 学习 · 1399 问题

查看课程