转到线程 - 停止执行

时间:2011-12-05 15:21:59

标签: go

我有两个像goroutine一样,

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

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

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)。