go 实现两个协程交替打印1-100的奇偶数 func main() { var c = make(chan struct{}) go func() { for i := 1; i <= 100; i++ { c<- struct{}{} if i%2 == 0 { fmt.Println(i) } } }() go func() { for i := 1; i <= 100; i++ { <-c if i%2 != 0 { fmt.Pri...
所以,可以达到控制两个协程,按照相同的步调执行。 即使,控制协程相同步调运行,还是不能控制交替打印输出。 因此,不能在步调同步后,都有输出。 所以,在步调相同之后,让该输出的协程输出,不该输出的协程不输出,始终有一个协成输出。 funcmain0(){ ch :=make(chanint)gofunc(){fori :=1; i <10; i +=...
wg.Add(2)goprintOdd()goprintEven() wg.Wait() fmt.Println("---done---") }funcprintOdd(){deferwg.Done()fori :=1; i <=100; i +=2{ifi !=1{ <-toOdd } fmt.Println(i) toEven <-struct{}{} } }funcprintEven(){deferwg.Done()fori :=2; i <=100; i +=2{ <-toEven fmt...
golang两个协程交替打印出1-100基于channel实现的,两个协程交替打印出1-100 package main import ("fmt""sync")var (toOdd = make(chan struct{})toEven = make(chan struct{})wg = sync.WaitGroup{} )func main() { wg.Add(2)go printOdd()go printEven()wg.Wait()fmt.Println("---done--...