为了账号安全,请及时绑定邮箱和手机立即绑定

[Golang]2个goroutine之间的通信

[Golang]2个goroutine之间的通信

Go
阿波罗的战车 2021-08-16 19:23:44
为什么在那个脚本http://play.golang.org/p/Q5VMfVB67- goroutine 淋浴不起作用?package mainimport "fmt"func main() {    ch := make(chan int)    go producer(ch)    go shower(ch)    for i := 0; i < 10; i++ {        fmt.Printf("main: %d\n", i)    }}func shower(c chan int) {    for {        j := <-c        fmt.Printf("worker: %d\n", j)    }}func producer(c chan int) {    for i := 0; i < 10; i++ {        c <- i    }}
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

在 goroutine 有机会完成自己的工作之前,您的 main 函数退出方式。

您需要在结束之前等待它们完成main()(这会停止所有程序),例如sync.WaitGroup,如“等待 n 个 goroutines 的终止”中所示。

在您的情况下,您需要等待 goroutineshower()结束:传递一个wg *sync.WaitGroup实例,以便在完成处理时shower()发出信号wg.Done()


查看完整回答
反对 回复 2021-08-16
  • 1 回答
  • 0 关注
  • 217 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信