用 goroutine 写了 3 种,得到的结果都不一样,不知道为什么?

riskers · · 1067 次点击
新加一个blockChan,带缓存(数量100) blockChan<-struct{} 写在 FetchProductpage(ch) 调用之前. fetchProductpage 调用完之后 _=<-blockChan取出值 这样就可以限制请求数了.
#5
更多评论
第一个没看出什么问题 第二个其实都相当于顺序执行了,goroutine都没啥用。 你这个情况直接加个chan缓存就可以了,同时做多个处理。
#1
我按照第一种请求的话,出现 panic 是 `no free connections available to host`,可能是因为我用的是 fasthttp。 我换成 go 的 http 就可以了,但是有一事不解,我用第一种方法写,相当于我同时开了 8000 多个协程,我感觉可能会崩掉(因为只是在我本地使用)。怎么能方便地去控制开协程的个数呢?比如我一次只想开 100 个协程。直接 chan 缓存成 100 就行了么? 望解答
#2