为什么在那个脚本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()
。
- 1 回答
- 0 关注
- 217 浏览
添加回答
举报
0/150
提交
取消