我有两个像goroutine一样,
Routine 1 {
// do something
}
Routine 2 {
// do something
}
main {
// do something
}
是否可以从例程1中,如果满足某些条件,停止整个程序执行?停止执行main和Routine 2?可举一个简单的例子。
答案 0 :(得分:3)
例如,
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()
}
答案 1 :(得分:1)
您还可以使用通道让例程1与例程2进行通信。 WLOG例程1可以向通道发送一些内容,例程2可以使用select语句从该通道取出某些东西或从另一个“工作”通道(为例程提供工作的通道)之外的东西。当routine2取消“kill execution”通道时,它可以完成并调用os.Exit(0)。