Go goroutine是由 Go 运行时管理的并发执行单元,可通过 go 语句启动,运行时负责把它们调度到可用线程。
并发与资源
goroutine 的数量不等于可同时执行的 CPU 核数。它适合组织并发工作,但创建任务仍会消耗栈、内存和调度资源,服务应限制无界启动。
退出与同步
实践中为每个 goroutine 设计完成或取消路径,并由明确的所有者等待结果。阻塞在永远没人发送的通道、忽略取消或没有清理的后台循环,都可能长期存活。
共享状态需要同步。发生数据竞争时可结合 race detector 排查,不能因为 goroutine 由运行时调度就认为普通 map 或复合更新天然安全。