golang 接力棒玩法 小例子

liangguangchuan · · 2710 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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学生")
}


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:liangguangchuan

查看原文:golang 接力棒玩法 小例子

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2710 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传