我有一个程序可以触发两个在后台提供服务的 goroutine。然后我想阻止主 goroutine 并让它们在后台运行。我想“永远”阻止,我不在乎干净的出口。我该怎么做?我可以在频道上等待,然后从不发送任何内容。我可以循环睡觉。两者都感觉不太对,我认为可能有一个更简单的block()
函数可以调用?
我目前正在这样做
var i chan int
<-i
您可以使用sync.WaitGroup
传递给每个 goroutine 的 a 。这是在调用 goroutine 中等待其子级的常用方法。
但是,在您不关心结果的情况下,这也应该这样做:
select {}
从有关规范select
:
如果没有非 nil 通道的情况,则语句将永远阻塞
该语句将永远阻塞,同时将控制权交给其他 goroutine。