一句话笔记-20220425
for range channel 引发的思考
1 |
|
一哥们找我说上面的代码(写法 1 & 2)有什么意图时,开始我还没 get 到点,而且还陷入了调度顺序的逻辑里。
首先要说明的是:两种写法都能控制并发的数量。
其实,这哥们想讨论的其实是资源本身的问题,用写法 1 是在拿到准入条件后才开始去创建 goroutine 的,但是写法 2 是一开始就创建了所有的 goroutine 然后才开始去竞争准入条件的。很明显 1 比 2 消耗更少的资源。
相较于资源的消耗,个人觉得还有一个就是执行效率上的差别,写法 1 在拿到准入后再开始准备 gorotine 然后再开始排队与执行。所以长时间运行结果,2 比 1 有更优的效率。
因此,对于服务端架构应该是充分考虑“权衡的艺术”。
一句话笔记-20220425
https://blog.isnap.cn/posts/4c2163c4/