Golang 面试题 (4) N个协程交替打印1-100 启动N个协程,共用一个外部变量计数器,计数器范围是1到100 开启N个有缓冲chan,chans[i]塞入数据代表协程i可以进行打印了,打印的数字就是计数器的数 协程i一直阻塞,直到chan[i]通道有数据可以拉,才打印 func main(
解法1: 两个管道实现 奇偶携程各自的管道,在收到通知后输出,然后通过对方管道通知对方输出 funcmain(){ ch0 :=make(chanint) ch1 :=make(chanint)gofunc(){fori :=1; i <10; i +=2{ <-ch0 fmt.Println(i) ch1 <-0} }()gofunc(){fori :=2; i <10; i +=2{ <-ch1 fmt.Println(i)...
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--...
)funcmain(){ 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...