【go】关于 goroutine 运行问题

代码如下

package main

import (

"fmt"

)

func say(s string) {

for i := 0; i < 5; i++ {

//time.Sleep(100 * time.Millisecond)

fmt.Println(s)

}

}

func main() {

go say("world")

say("hello")

}

下面是相同环境下运行,为什么有概率发生 world 的结果不出来(time.Sleep关闭情况下)
【go】关于 goroutine 运行问题

【go】关于 goroutine 运行问题

回答

package main

import (

"fmt"

)

func say(s string) {

for i := 0; i < 5; i++ {

//time.Sleep(100 * time.Millisecond)

fmt.Println(s)

}

}

func main() {

go say("world")

say("hello")

time.Sleep(100 * time.Millisecond) //增加这一行你就每次都能看见了, 主线程跑得有时太快,你需要等等这个世界

}

主线程退出时,是不会等子线程执行完的, 会直接杀死。

在多线程编程里面,进程里面的线程分为两种,主线程和主线程创建的其它线程。如果主线程终止,所有被主线程创建的线程都会被终止。

以上是 【go】关于 goroutine 运行问题 的全部内容, 来源链接: utcz.com/a/108571.html

回到顶部