为什么我的goroutine不执行?
我正在学习Go,并且想尝试goroutine和频道。
这是我的代码:
package mainimport "fmt"
func main(){
messages := make(chan string,3)
messages <- "one"
messages <- "two"
messages <- "three"
go func(m *chan string) {
fmt.Println("Entering the goroutine...")
for {
fmt.Println(<- *m)
}
}(&messages)
fmt.Println("Done!")
}
结果如下:
Done!
我不明白为什么我的goroutine永远不会执行。没有输入“进入goroutine”,并且没有任何错误消息。
回答:
事实是您的goroutine开始执行,但是在执行任何操作之前就结束了,因为您的程序在打印后立即停止Done!
:goroutine的执行与主程序无关,但是将在与程序相同的位置处停止。因此,基本上,您需要一些使程序等待它们的过程。它可能是另一个等待大量消息sync.WaitGroup
,或其他技巧的通道。
您应该在golang博客中阅读有关并发性的出色文章。
以上是 为什么我的goroutine不执行? 的全部内容, 来源链接: utcz.com/qa/404220.html