首页 > 科技 > Go 并发处理逻辑数量的控制

Go 并发处理逻辑数量的控制



什么是并发处理的数量

大家理解一下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

setTimeout(function () { fetch('http://www.sosokankan.com/stat/article.html?articleId=' + MIP.getData('articleId')) .then(function () { }) }, 3 * 1000)