使用无缓冲的 channel,使两个协程同步,按照相同的步调执行,但因为要交替打印,所以不能每次同步后都打印,要让该输出的协程输出,不该输出的协程不输出。
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
var CA chan int
func main() {
wg = sync.WaitGroup{}
CA = make(chan int)
wg.Add(2)
go A()
go B()
wg.Wait()
}
func A() {
for i := 1; i <= 100; i++ {
CA <- 1
if i%2 == 0 {
fmt.Println(i)
}
}
wg.Done()
}
func B() {
for i := 1; i <= 100; i++ {
<-CA
if i%2 == 1 {
fmt.Println(i)
}
}
wg.Done()
}