Page

【golang】多协程交替打印奇偶数

1026Anson21-06-30



package main

import (
	"fmt"
)

func main() {
	c := make(chan int)
	go func() {
		for i := 1; i < 10; i++ {
			//奇数
			c <- 1
			if i%2 == 1 {
				fmt.Println("线程1打印:",i)
			}
		}
	}()
	go func() {
		for i := 1; i < 10; i++ {
			<- c
			//偶数
			if i%2 == 0 {
				fmt.Println("线程2打印:",i)
			}
		}
	}()
	for {}
}

image.png


思考:代码如果改成这样则顺序不正确?

                        //奇数
			if i%2 == 1 {
				fmt.Println("线程1打印:",i)
			}
			c <- 1


来自anson博客 

http://www.tp0.top

2021-06-30 17:26:17