面试题:如何控制并发执行的 Goroutine 的最大数目?很赞的一个答案

polaris · · 4377 次点击
polaris
社区,需要你我一同完善!
<a href="/user/Saner-Lee" title="@Saner-Lee">@Saner-Lee</a> 控制最大并发 goroutine 数,当 goroutine 运行完,新的 goroutine 可以创建运行。
#2
更多评论
控制最大并发数,应该是这个池可以控制的,但是看代码go程用完就不能用了,也就是说max个go程结束后这个结构就没用了。同时可能max个go程全部用完后,由于使用者误操作Run,导致阻塞。提问者只是个刚毕业大学生,还没有实际开发经验,不知道这些问题是不是自己考虑的比较少,提的比较幼稚
#1
1楼 <a href="/user/Saner-Lee" title="@Saner-Lee">@Saner-Lee</a> goroutine中Task执行完毕之后,这个goroutine并不会退出。而是阻塞到range p.work,直到下一个Task到来。因为range p.work 产生的迭代值为Channel中发送的值,它会一直迭代直到channel被关闭。
#3