我写了一个退出和同步队列通道
预期打印如下,但没有发生,将g1或g2打印值连续按两个我知道无缓冲通道同步规则,但似乎我误解了它
g1 0
g2 1
g1 1
g2 1
g1 2
g2 2
package main
import (
"fmt"
)
func main() {
exit := make(chan struct{})
transfer := make(chan int)
go func() {
defer func() {
close(exit)
}()
for i := 0; i < 20; i++ {
transfer <- i
fmt.Println("g1\t", i) // 1
}
}()
go func() {
for i := 0; i < 20; i++ {
<-transfer
fmt.Println("g2\t", i) // 3 4
}
}()
<-exit
}
胡说叔叔
元芳怎么了
相关分类