之前我写过一篇博客介绍 Python中的并发控制。
Python的并发控制可以说很优雅,Java的也是类似的,那么,Go语言咋办?如果我也想实现类似的需求,例如:同时不超过8个goroutine 执行任务,那该咋办呢?我在写 gotasks 这个异步任务框架 就有这种需求,因此我 把Go的并发控制抽象成如下代码,以后就可以直接使用了:
来看看用法:
是不是也挺优美的?这里注意两点:
gopool.Submitgopool.Wait()
这样就可以实现我们的需求了,例如并发3个Goroutine执行任务。
参考资料: