两个goroutine交替依次打印十次1和2,要求最多使用两个channel,不能使用sleep、waitGroup。
package main
import (
"fmt"
)
var POOL = 10
var msgFirst = make(chan struct{})
var msgSecond = make(chan struct{})
func goroutineFist() {
for i := 0; i < POOL; i++ {
msgFirst <- struct{}{}
fmt.Println("1")
<-msgSecond
}
}
//func goroutineSecond() {
// for i := 0; i < POOL; i++ {
// <-msgFirst
// fmt.Println("2")
// msgSecond <- struct{}{}
// }
//}
func main() {
go goroutineFist()
//go goroutineSecond() // 因为题目要求最多使用两个channel,不能使用sleep、waitGroup
for i := 0; i < POOL; i++ {
<-msgFirst
fmt.Println("2")
msgSecond <- struct{}{}
}
}
输出:
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2