您好,欢迎访问宜昌市隼壹珍商贸有限公司
400 890 5375Go语言通过goroutine实现轻量级并发,启动成本低(初始栈仅2KB),用go关键字启动,配合sync.WaitGroup协调多个goroutine的执行与等待,避免泄漏和竞态。
Go语言通过goroutine实现轻量级并发,无需手动管理线程生命周期,启动成本极低(初始栈仅2KB),适合高并发多任务场景。关键在于合理启动、协调与终止goroutine,避免泄漏和竞态。
使用go关键字前缀函数调用即可启动goroutine。它会立即返回,不阻塞主流程:
当需确保所有子任务执行完毕再继续,用sync.WaitGroup计数协调:
Done()
示例:启动5个任务并统一等待
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
fmt.Printf("Task %d finished\n", id)
}(i)
}
wg.Wait() // 主协程在此暂停,直到5个都调用Done
长期运行的goroutine需支持主动取消。用context.WithCancel生成可取消上下文:
goroutine易出错点需特别注意: