Golang goroutine 同步原语:sync 包让你对并发控制得心应手
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
// 创建第一个goroutine
go func() {
defer wg.Done() // 告诉WaitGroup我已经完成了
fmt.Println("Hello from the first goroutine!")
}()
// 创建第二个goroutine
go func() {
defer wg.Done() // 告诉WaitGroup我已经完成了
fmt.Println("Hello from the second goroutine!")
}()
// 等待所有goroutine完成
wg.Wait()
}
这段代码使用了sync.WaitGroup
来同步两个并发执行的goroutine。Add
方法用于设置等待的goroutine数量,Done
方法在每个goroutine结束时调用,以减少等待的数量。Wait
方法会阻塞直到所有的goroutine都执行完毕。这是Golang中实现并发同步的一个常见模式。
评论已关闭