Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止程序/goroutine?_Go_Goroutine - Fatal编程技术网

如何阻止程序/goroutine?

如何阻止程序/goroutine?,go,goroutine,Go,Goroutine,我有一个程序,可以启动两个goroutine,在后台提供服务。然后我想阻止主goroutine,让它们在后台运行。我想封锁“永远”,我不在乎干净的出口。我该怎么做?我可以在频道上等待,然后再也不发送任何东西。我可以睡成圈。这两种方法都不太合适,我想我可以调用一个更简单的block()函数 我现在正在做这个 var i chan int <-i var i chan int 您可以使用传递给每个goroutine的。这是常见的方式 在电话亭等孩子们 但是,在您不关心结果的情况下,也应该这样

我有一个程序,可以启动两个goroutine,在后台提供服务。然后我想阻止主goroutine,让它们在后台运行。我想封锁“永远”,我不在乎干净的出口。我该怎么做?我可以在频道上等待,然后再也不发送任何东西。我可以睡成圈。这两种方法都不太合适,我想我可以调用一个更简单的
block()
函数

我现在正在做这个

var i chan int
<-i
var i chan int
您可以使用传递给每个goroutine的。这是常见的方式
在电话亭等孩子们

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

select {}
从:

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


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

它通常取决于您的服务实现。您如何在不阻塞(套接字、延迟等)的情况下提供这些服务?根据配置,我在多个goroutine中(在不同的端口上)侦听和服务。因此,主函数启动gorountines,它在后台运行。然后我的主goroutine必须阻塞,否则程序将退出。也许我没有在我的问题中清楚地表达出来。我有(可能)不止一个。虽然给出的答案非常好,但如果你只生成第一个(n-1)goroutine,然后不生成第n个goroutine,只需直接在主线程中调用它就可以了。谢谢,我确实考虑过了,但是
if
s的纠结要比最后调用
select{}
简单得多。这只是一个测试工具,所以我想可以了。谢谢。如果
选择
块我是否需要
用于
?@Joe不,你不需要它,这是一个错误。更正了。