前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go语言基础10-Goroutine

go语言基础10-Goroutine

作者头像
吐吐吐吐吐葡萄皮
发布2019-04-04 15:03:24
3360
发布2019-04-04 15:03:24
举报
文章被收录于专栏:ai_houziai_houzi

实例

代码语言:javascript
复制
func main() {
	for i := 0; i < 1000; i++ {
		go func(i int) {
			for {
				fmt.Printf("我打印的是:%d\n",i)
			}
		}(i)
	}
	time.Sleep(time.Millisecond)
}
协程 Coroutine
  • 轻量级”线程“
  • 非抢占式多任务处理,由协程主动交出控制权
  • 编译器/解释器/虚拟机层面的多任务
  • 多个协程可能在一个或者多个线程上运行
  • 子程序是协程的一个特例
goroutine的定义
  • 任何函数只需加上go就能送给调度器运行
  • 不需要在定义时区分是否是异步函数
  • 调度器会在合适的店进行切换
  • 使用-race来检测数据访问冲突
goroutine可能切换的点
  • I/O,select
  • channel
  • 等待锁
  • 函数调用(有时)
  • runtime.Gosched()
  • 不能保证切换,不能保证在其他地方不切换
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协程 Coroutine
  • goroutine的定义
  • goroutine可能切换的点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档