【go】关于 goroutine 运行问题
代码如下
package mainimport (
"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关闭情况下)
回答
package mainimport (
"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