Loading

打印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 完成
}
posted @ 2025-08-21 11:52  老卫同学  阅读(13)  评论(0)    收藏  举报