分享
golang 接力棒玩法 小例子
liangguangchuan · · 3318 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
package main
import (
"fmt"
"runtime"
)
/*
runtime.Gosched() 可以当做接力赛来处理
场景:学校接力赛,一共跑两圈。A B学生一人一圈。半圈一换
go echo("next program")比赛开始了
遇到 runtime.Gosched() A学生跑完了半圈。先歇会有点累,棒子给 B学生
echo("prev program") B学生开跑。
runtime.Gosched() 上次的传递还没完。继续往下跑
fmt.Println(s) 跑完了。给A学生让他跑。
完成后 继续 执行 (比赛开始了)
再次 进行推
遇到 runtime.Gosched() A学生跑完了。先歇会有点累,棒子给 B学生
echo("prev program") B学生开跑。
runtime.Gosched() 上次的传递还没完。继续往下跑
fmt.Println(s) 跑完了。继续给A学生让他跑。
最后一次传递给A学生 是看不到的 因为这个时候程序已经结束了,当然你可以给一个程序延迟 可以看到最后的传递
*/
func echo(s string) {
for i := 0; i < 2; i++ {
runtime.Gosched()
fmt.Println(s)
}
}
func main() {
go echo("A学生")
echo("B学生")
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3318 次点击
下一篇:go http 服务器编程
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
package main
import (
"fmt"
"runtime"
)
/*
runtime.Gosched() 可以当做接力赛来处理
场景:学校接力赛,一共跑两圈。A B学生一人一圈。半圈一换
go echo("next program")比赛开始了
遇到 runtime.Gosched() A学生跑完了半圈。先歇会有点累,棒子给 B学生
echo("prev program") B学生开跑。
runtime.Gosched() 上次的传递还没完。继续往下跑
fmt.Println(s) 跑完了。给A学生让他跑。
完成后 继续 执行 (比赛开始了)
再次 进行推
遇到 runtime.Gosched() A学生跑完了。先歇会有点累,棒子给 B学生
echo("prev program") B学生开跑。
runtime.Gosched() 上次的传递还没完。继续往下跑
fmt.Println(s) 跑完了。继续给A学生让他跑。
最后一次传递给A学生 是看不到的 因为这个时候程序已经结束了,当然你可以给一个程序延迟 可以看到最后的传递
*/
func echo(s string) {
for i := 0; i < 2; i++ {
runtime.Gosched()
fmt.Println(s)
}
}
func main() {
go echo("A学生")
echo("B学生")
}