如何阻止程序/ goroutine?

时间:2013-09-12 18:46:46

标签: go goroutine

我有一个程序可以触发两个在后台提供服务的goroutine。然后我想阻止主goroutine并让它们在后台运行。我想阻止'永远',我不关心干净的出口。我该怎么做?我可以在频道上等待,然后再也不发送任何信息。我可以在一个循环中睡觉。我觉得可能有一个更简单的block()功能我觉得不是很正确吗?

我目前正在这样做

var i chan int
<-i

1 个答案:

答案 0 :(得分:5)

您可以使用传递给每个goroutine的sync.WaitGroup。这是常见的方式 等待为孩子们打电话给goroutine。

但是,在您不关心结果的情况下,这也应该这样做:

select {}

来自spec regarding select

  

如果没有非零通道的情况,则语句将永久阻止

这句话永远阻止,同时让对其他goroutines产生控制权。