【发布时间】:2011-12-07 07:12:49
【问题描述】:
我有两个类似的 goroutine,
Routine 1 {
// do something
}
Routine 2 {
// do something
}
main {
// do something
}
是否可以从例程 1 中,如果满足某些条件,停止整个程序执行?停止执行 main 和 Routine 2 ?可以举个简单的例子。
【问题讨论】:
标签: go
我有两个类似的 goroutine,
Routine 1 {
// do something
}
Routine 2 {
// do something
}
main {
// do something
}
是否可以从例程 1 中,如果满足某些条件,停止整个程序执行?停止执行 main 和 Routine 2 ?可以举个简单的例子。
【问题讨论】:
标签: go
例如,
package main
import "os"
func routine1() {
// set exit = true when ready to exit
exit := false
if exit {
os.Exit(0)
}
}
func routine2() {
}
func main() {
go routine1()
go routine2()
}
【讨论】:
您还可以使用通道让routine1 与routine2 通信。 WLOG 例程 1 可以通过通道发送某些内容,例程 2 可以使用 select 语句从该通道或另一个“工作”通道(为例程提供工作的通道)中取出某些内容。当routine2从“kill execution”通道中取出一些东西时,它可以结束并调用os.Exit(0)。
【讨论】: