我正在学习《Go语言之旅》,并且已经编辑了大部分课程以确保我完全理解它们。我有一个关于https://tour.golang.org/concurrency/1的问题,这个问题与并发相关。
package main
import (
"fmt"
"time"
)
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")
}
离开
main
不变会产生随机的hello和world的排序,因为线程每次运行程序时执行的顺序都不同。我有两个问题:
- 如果我从包含world的那一行中删除
go
并添加到包含hello的那一行中,那么world会打印5次,而hello则完全没有打印。这是为什么? - 如果我在两行前面都加上
go
,什么也不会打印。这是为什么?
谢谢!
Gosched
来让主线程暂停,从而允许您的例程进行处理。查看此帖子。 - Dioxin