Go语言有天生良好的多并发特征,依赖goroutines可以很好的实现多并发功能。但是,在多并发之下,控制goroutines的数量,也是需要考虑的问题。如果不限制goroutines,在较大量的goroutines影响下可能会消耗较多的CPU单元、内存、磁盘IO和网络性能。
控制的方法也很简单,可以通过channal方式限制。如下例:
则可以比较好的控制运行,除此之外,也可以更简单的使用CPU单元来限制,只需要替换一句:
Go语言有天生良好的多并发特征,依赖goroutines可以很好的实现多并发功能。但是,在多并发之下,控制goroutines的数量,也是需要考虑的问题。如果不限制goroutines,在较大量的goroutines影响下可能会消耗较多的CPU单元、内存、磁盘IO和网络性能。
控制的方法也很简单,可以通过channal方式限制。如下例:
则可以比较好的控制运行,除此之外,也可以更简单的使用CPU单元来限制,只需要替换一句: