gpt4 book ai didi

go - [Golang]2个goroutine之间的通信

转载 作者:IT王子 更新时间:2023-10-29 01:36:53 27 4
gpt4 key购买 nike

为什么在那个脚本中 http://play.golang.org/p/Q5VMfVB67-goroutine 淋浴不起作用?

package main

import "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
}
}

最佳答案

在 goroutines 有机会完成它们自己的工作之前,你的 main 函数退出方式。

在结束 main()(停止所有程序)之前,您需要等待它们完成,例如 sync.WaitGroup ,如“Wait for the termination of n goroutines”中所示。

在您的情况下,您需要等待 goroutine shower() 结束:为 shower()< 传递一个 wg *sync.WaitGroup 实例 在处理完成时向 wg.Done() 发送信号。

关于go - [Golang]2个goroutine之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25946603/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com