空 struct 的应用
1、在 struct 缓冲 通道为 "任意多少" 的 chan中,只有close之后才能进行下一步,不然会一直卡住
1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 //fixme : 在 struct 缓冲 通道为 "任意多少" 的 chan中,只有close之后才能进行下一步,不然会一直卡住 8 9 func data(i int,ch chan struct{}){ 10 <- ch 11 fmt.Println(time.Now().Unix(),"== ",i) 12 } 13 14 15 func main() { 16 ch := make(chan struct{}) 17 for i:= 0;i<=10;i++{ 18 go data(i,ch) 19 } 20 21 fmt.Println(time.Now().Unix()) 22 time.Sleep(2*time.Second) 23 24 close(ch) 25 26 time.Sleep(2*time.Second) 27 fmt.Println(time.Now().Unix()) 28 29 }
在进行 close(ch)之后,之前所有的 协程都会在这一刻一起运行!