2 回答
TA贡献2039条经验 获得超7个赞
goroutine 获得多少 CPU 资源取决于很多因素。
我们一般可以说的是,仅处理可被 100 整除的数字的 goroutine 很可能比另一个 goroutine 等待更多。你不应该担心这一点,等待通道上的元素不需要 CPU 资源,所以如果你有“足够”的其他 goroutines 有工作要做,他们可以利用你的 CPU。
由于显而易见的原因,您的示例很简单,但在现实生活中,将您的任务抽象为一般任务(例如,处理任何数字都可能是一项任务)、创建和使用一般工作池并发送所有任务会更有利可图执行到池中。这样,无论池中有多少 goroutine,如果有工作要做并且有空闲(等待)goroutine,它将承担任务,尽可能利用您的 CPU 资源。作业处理器(执行者)应该知道如何处理数字是100
或101
。
TA贡献1877条经验 获得超1个赞
如果没有任何内容可供ch2
阅读,handler2
则什么也不做。同时,handler1
忙于处理它从中读取的内容 ch1
。这会消耗更多的 CPU 时间。
从启动三个 Goroutine 到数据在通道上可用需要多长时间会很有趣。有可能generator
之前已经完成了所有工作handler1
并handler2
准备好从通道中读取。在这种情况下,handler2
将很快完成其工作,同时handler1
还有工作要做。
您当然可以创建更多 Goroutines,它们handler1
将以一种循环方式处理数据。根据工作的性质,这可能会提高或降低整体性能。
顺便说一句,generator
应该在一切都写完的时候。close
ch1
ch2
- 2 回答
- 0 关注
- 125 浏览
添加回答
举报