1、题目
有两个协程,A打印1-10,B打印1-10,交替打印
2、解题1
channel阻塞等待,两个channel
package main
import "fmt"
func main(){
exit := make(chan int)
a := make(chan bool,1)
b := make(chan bool)
go func() {
for i:= 1;i <= 10;i++{
if ok := <- a;ok{
fmt.Println("A:",i)
b <- true
}
}
}()
go func() {
for i:= 1;i <= 10;i++{
if ok:= <- b;ok{
fmt.Println("B:",i)
a <- true
}
}
}()
a <- true
<-exit
}
3、解题2
channel阻塞等待,一个channel
package main
import "fmt"
func main(){
a := make(chan int)
exit := make(chan bool)
go func() {
for i:= 1;i<=10;i++{
fmt.Println("A:",<-a)//等待打印
a<-i //传入,下面的协程接受
}
}()
go func() {
for i := 1;i<=10;i++{
a<-i //传入,上面的协程接受
fmt.Println("B",<-a) //等待打印
}
}()
<-exit
}