在循环中添加等待个数
来源:6-2 使用Channel等待任务结束
qq_大号_hozACL
2021-06-21 08:48:11
如果预先不知道需要添加的个数,而在循环中添加的话 ,为什么会出现这样的错误呢?
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
}
不知道我理解的对不对,望老师们指正。
相似问题