知识卡片
goroutine的启动开销权衡
内容
goroutine虽轻量,但启动和调度仍有真实成本,不是免费的。发散:这说明”要不要用并发”不能凭直觉,得看任务本身的计算量是否能覆盖调度开销——对细粒度、极快完成的任务滥用并发反而会拖慢程序,并发适合的是有真实等待或计算量、能让多个任务的执行时间重叠起来的场景。
参考来源
- 位置:《Go Web编程》第9章《发挥Go的并发优势》(源文件:_epub-src/OEBPS/text00013.html)
- 结论依据:原文在该章节围绕“goroutine虽轻量,但启动和调度仍有真实成本,不是免费的”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:优异的并发编程支持,所以它在垂直扩展方面拥有不俗的表现:一个Go Web应用只需要使用一个操作系统线程(OS thread),就可以通过调度来高效地运行数十万个goroutine。 跟其他Web应用一样,Go也可以通过在多个Go Web应用之上架设代理来进行高效的水平扩展。因为Go Web应用都会被编译为不包含任何动态依赖关系的静态二进制…