【发布时间】:2015-04-15 15:26:36
【问题描述】:
package main
import (
"fmt"
//"runtime"
)
func say(s string) {
for i := 0; i < 5; i++ {
//runtime.Gosched()
fmt.Println(s)
}
}
func main() {
go say("world") // create a new goroutine
say("hello") // current goroutine
}
为什么结果是:
你好
你好
你好
你好
你好
为什么没有world?
答案:(已编辑:) 如果我这样做,现在很好:
package main
import (
"fmt"
"runtime"
)
func say(s string) {
for i := 0; i < 5; i++ {
//runtime.Gosched()
fmt.Println(s)
}
}
func main() {
go say("world") // create a new goroutine
runtime.Gosched()
say("hello") // current goroutine
}
【问题讨论】:
-
使用
GoSched并不能保证其他 goroutine 将运行完成。您通常不应该在代码中使用它。
标签: go