什么是并发处理的数量
大家理解一下Goroutine 协程为清亮及的线程。 就是可有并发处理逻辑的最小单元。 理解多个 协程同时并发处理逻辑只要
for i:=0 ; i
上面就是n个协程同时并发处理逻辑。 在go中非常方便!。
为什么要控制并发处理的协程数量
上面说了非常方便多开几个协程。那么问题来了,如果不控制并发数量。我们举个例子,并发使用网络登陆同一个ftp server. 那么很快就会超过限制。而出现问题。 简单点说就是控制一下最大并发处理的协程的数量
怎么控制并发数量
控制 Goroutine 的数量
先看不控制并发的方法
func main() { jobsCount := 10 group := sync.WaitGroup{} for i := 0; i
控制并发数量的方法
注意,下面的代码控制最多4个并发协程同时处理! 4个4个4个不是n个哦
func main() { jobsCount := 10 group := sync.WaitGroup{} var jobsChan = make(chan int, 4) // a) 协程1 生成指定数目的 goroutine,每个 goroutine 消费 jobsChan 中的数据 poolCount := 4 for i := 0; i
理解控制方法的核心
就是将所有要处理的协成先入队。(有缓冲channel)
在通过channel等待来实现并发的控制。
结论及反思扩展
理解之后发现好简单吧。这就是会了不难,难了不会。
老子道德经说: 福祸互为根生。对于go并发来说,我的理解就是
太快了,就不稳定。
太稳定了,(不并发)就不快。 这两者是可有互相转化的。
高并发好,快。
并发太高,系统受不了,又问题。 控制并发数,稳。
总之:在实际中还要根据系统的硬件设施。比如内存,iO,网络。等资源。进行一个动态的配置调试。 找到一个最佳平衡点。
!又快,又稳!
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.sosokankan.com/article/2072924.html
赞 (2)
打赏 微信扫一扫
Netshare汉化修改版(wifi热点同时开)
« 上一篇2020-01-07 07:31:47
人民版权启用新域名 成为首家接入“天平链”的媒体版权平台
下一篇 »2020-01-07 07:45:24