package main
import (
"fmt"
"sync"
)
var wg = sync.WaitGroup{}
var a, b, c = 0, 0, 0
func main() {
var chan1 = make(chan struct{}, 1)
var chan2 = make(chan struct{}, 1)
var chan3 = make(chan struct{}, 1)
wg.Add(300)
chan1 <- struct{}{}
for i := 0; i < 100; i++ {
go cat(chan1, chan2)
go dog(chan2, chan3)
go fish(chan3, chan1)
}
wg.Wait()
fmt.Println("结束")
}
func dog(rev chan struct{}, send chan struct{}) {
<-rev
a++
fmt.Println("Dog", a)
send <- struct{}{}
wg.Done()
}
func cat(rev chan struct{}, send chan struct{}) {
<-rev
b++
fmt.Println("Cat", b)
send <- struct{}{}
wg.Done()
}
func fish(rev chan struct{}, send chan struct{}) {
<-rev
c++
fmt.Println("Fish", c)
send <- struct{}{}
wg.Done()
}
最后修改:2022 年 03 月 19 日
© 允许规范转载