我有一个程序可以触发两个在后台提供服务的goroutine。然后我想阻止主goroutine并让它们在后台运行。我想阻止'永远',我不关心干净的出口。我该怎么做?我可以在频道上等待,然后再也不发送任何信息。我可以在一个循环中睡觉。我觉得可能有一个更简单的block()
功能我觉得不是很正确吗?
我目前正在这样做
var i chan int
<-i
答案 0 :(得分:5)
您可以使用传递给每个goroutine的sync.WaitGroup
。这是常见的方式
等待为孩子们打电话给goroutine。
但是,在您不关心结果的情况下,这也应该这样做:
select {}
如果没有非零通道的情况,则语句将永久阻止
这句话永远阻止,同时让对其他goroutines产生控制权。