goroutine 新手入门看不懂

Caretaker9 2016-05-10 10:15:59
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") //
say("hello") //
//say("test")
}

书上解释说runtime.Gosched是把cpu时间片让给别人,可是。
为什么最后hello只执行了4次?
还有,为什么加入say(“test”)后test却得不到内存只能最后运行。
我看了好多地方解释都看不懂,希望大神能给我解释 通俗一点。
...全文
62 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_34979374 2016-05-13
  • 打赏
  • 举报
回复
我已经搞懂了。 但是没人回答,而且我的积分也不够了。 我只好可耻的自己回答自己的问题 当执行go的时候,就会建立一个goroutine来执行这个方法。 然而,主线程还是会执行。goroutine随主线程死 因为他们两个都有意将内存让给对方【runtime.Gosched()】。 所以他们两个交替输出, 又因为主线程先执行完了。程序便关闭了。 所以world只能执行4次。 应该是打错了打成 hello执行四次了。

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧