codepackagemainimport("fmt")varc=make(chanint,50)varcount=0funcmain(){fori:=0;i
2 回答

慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
这种可以使用sync里的WaitGroup工具来做等待,也可以单独开个channel来等待。如果只是想单纯的保证goroutine全部执行完毕再退出main,可以定义个相同数量buffer的channel,每个goroutine执行结束后就写入这个channel,而main只要消费等待channel就可以达到阻塞的目的了。类似这样varc=make(chanint,50)varcount=0varretChannel=make(chanint,5)funcmain(){fori:=0;i<5;i++{goconsumer(i)}fori:=0;i<1000;i++{c<-i}/**here**/close(c)fori:=0;i<5;i++{<-retChannel}close(retChannel)fmt.Println(count)}funcconsumer(indexint){fortarget:=rangec{fmt.Printf("no.%d:%d\n",index,target)count++}retChannel<-index}
添加回答
举报
0/150
提交
取消