标准答案

  1. goroutine 可以大量创建,由 runtime 将其复用到操作系统线程上执行。
  2. 线程和进程分别提供执行与故障隔离边界,进程间资源默认不共享。
  3. goroutine 不等于无限并发,阻塞系统调用、内存、连接和下游容量仍需控制。
  4. 服务应通过 channel、context、WaitGroup 或 errgroup 管理任务生命周期。

题目解析

goroutine 是 runtime 调度的轻量执行单元,减少了创建和切换成本,但每个任务仍占用栈、内存、连接和下游资源。轻量不等于无限并发。

线程和进程是执行与隔离边界,goroutine 可能在不同 M 上运行;阻塞系统调用、CPU 密集和锁竞争仍会影响整个服务。

可靠并发需要 context、channel、WaitGroup/errgroup 和任务状态共同管理,说明谁创建、谁取消、谁等待以及副作用如何幂等。

常见误区

  • 误区:启动 goroutine 后没有等待或取消。改正:为每个 goroutine 定义生命周期、context 和退出路径。
  • 误区:认为 goroutine 一定比线程快。改正:比较任务类型、阻塞、调度、内存和真实吞吐。
  • 误区:每个请求无限创建 goroutine。改正:使用有界并发、队列和下游容量控制。

作者信息