打印1-10
func printWithCond() {
var mu sync.Mutex
cond := sync.NewCond(&mu)
var wg sync.WaitGroup
current := 1
for i := 0; i < 10; i++ {
wg.Add(1) // 添加等待组计数器
go func(num int) {
defer wg.Done()
mu.Lock()
for current != num {
cond.Wait() // 等待条件满足
}
fmt.Println(num)
current++ // 更新当前数字
cond.Broadcast() // 通知其他等待的 goroutine
mu.Unlock()
}(i + 1)
}
wg.Wait() // 等待所有 goroutine 完成
}

浙公网安备 33010602011771号