【问题标题】:Go Threads - STOP ExecutionGo 线程 - 停止执行
【发布时间】:2011-12-07 07:12:49
【问题描述】:

我有两个类似的 goroutine,

Routine 1 {
// do something
}
Routine 2 {
 // do something
}
 main {
 // do something
}

是否可以从例程 1 中,如果满足某些条件,停止整个程序执行?停止执行 main 和 Routine 2 ?可以举个简单的例子。

【问题讨论】:

    标签: go


    【解决方案1】:

    例如,

    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()
    }
    

    【讨论】:

      【解决方案2】:

      您还可以使用通道让routine1 与routine2 通信。 WLOG 例程 1 可以通过通道发送某些内容,例程 2 可以使用 select 语句从该通道或另一个“工作”通道(为例程提供工作的通道)中取出某些内容。当routine2从“kill execution”通道中取出一些东西时,它可以结束并调用os.Exit(0)。

      【讨论】:

        最近更新 更多