两个 goroutine 交替打印 1-100

两个 goroutine 交替打印 1-100

channel 操作

// 两个 Goroutine 交替打印 1 到 100
func main() {
	ch1, ch2 := make(chan int), make(chan int)
	done := make(chan int)

	go func() {
		for x := range ch1 {
			println("ch1: ", x)
			ch2 <- x + 1
		}
	}()
	
	go func() {
		for {
			y := <-ch2
			println("ch2: ", y)
			if y == 100 {   // 这里都出来的是 2 的倍数,所以判断是否为 100
				break
			}
			ch1 <- y + 1
		}
		close(ch1) // 谁写谁关闭
		close(done)
	}()

	ch1 <- 1

	<-done
}
  • ch1 用来打印奇数
  • ch2 用来打印偶数
  • done 用来控制程序退出
posted @ 2024-05-28 18:01  LanceZh  阅读(99)  评论(0)    收藏  举报