美文网首页
goroutine线程

goroutine线程

作者: zzjack | 来源:发表于2017-10-16 17:06 被阅读0次

原文链接:http://www.cnblogs.com/yjf512/archive/2012/06/06/2537712.html

创建

go funcName() 可以创建一个线程。

阻塞

多线程中,主线程要等子线程全部结束后再结果。换句话说,在没确认子线程全部执行完毕前,主线程不能先结束。那么如何确认子线程是否结束呢?用channel。

channel阻塞主线程

func te(messager chan int,who int){
    UT.SetTime(messager,"minute",map[string]int{"S":5})
    log.Println("i am thread",who)
    select {
    case <- messager:
        fmt.Println("hello")
        break
        return
    }
}

func main(){
    exitSignal := make(chan int)
    t := make(chan int,1)
    for i:=0;i<5;i++{
        go te(t,i)
    }
    <- exitSignal
}

setTime是我写的定点器,就在这个文章系列里面。
我这个例子是为了实验,当主线程结果时(return),子线程是否会结果(setTime里面的子线程),会不会抛异常出来,结果发现不会。

相关文章

网友评论

      本文标题:goroutine线程

      本文链接:https://www.haomeiwen.com/subject/ysqluxtx.html