goroutine线程

2017-10-16  本文已影响0人  zzjack

原文链接: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里面的子线程),会不会抛异常出来,结果发现不会。

上一篇 下一篇

猜你喜欢

热点阅读