💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
```go package main import ( "fmt" "sync" "sync/atomic" ) // 循环打印 "dog", "fish", "cat" 每个100次 func main() { wg := sync.WaitGroup{} wg.Add(3) var dogCounter uint64 var fishCounter uint64 var catCounter uint64 dogCh := make(chan struct{}, 1) fishCh := make(chan struct{}, 1) catCh := make(chan struct{}, 1) dogCh <- struct{}{} go dog(&wg, dogCh, fishCh, dogCounter) go fish(&wg, fishCh, catCh, fishCounter) go cat(&wg, catCh, dogCh, catCounter) wg.Wait() } func dog(wg *sync.WaitGroup, dogCh, fishCh chan struct{}, counter uint64) { for { if (counter >= uint64(100)) { wg.Done() return } <- dogCh fmt.Println("dog") atomic.AddUint64(&counter, 1) fishCh <- struct{}{} } } func fish(wg *sync.WaitGroup, fishCh, catCh chan struct{}, counter uint64) { for { if (counter >= uint64(100)) { wg.Done() return } <- fishCh fmt.Println("fish") atomic.AddUint64(&counter, 1) catCh <- struct{}{} } } func cat(wg *sync.WaitGroup, catCh, dogCh chan struct{}, counter uint64) { for { if (counter >= uint64(100)) { wg.Done() return } <- catCh fmt.Println("cat") atomic.AddUint64(&counter, 1) dogCh <- struct{}{} } } ```