5

我有一个程序可以触发两个在后台提供服务的 goroutine。然后我想阻止主 goroutine 并让它们在后台运行。我想“永远”阻止,我不在乎干净的出口。我该怎么做?我可以在频道上等待,然后从不发送任何内容。我可以循环睡觉。两者都感觉不太对,我认为可能有一个更简单的block()函数可以调用?

我目前正在这样做

var i chan int
<-i
4

1 回答 1

5

您可以使用sync.WaitGroup传递给每个 goroutine 的 a 。这是在调用 goroutine 中等待其子级的常用方法。

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

select {}

从有关规范select

如果没有非 nil 通道的情况,则语句将永远阻塞

该语句将永远阻塞,同时将控制权交给其他 goroutine。

于 2013-09-12T19:09:22.610 回答