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