小菜菜博客
当前位置: Devops运维 > Go语言并发之goroutine

Go 语言的调度器通过使用与 CPU 数量相等的线程减少线程频繁切换的内存开销,同时在每一个线程上执行额外开销更低的 Goroutine 来降低操作系统和硬件的负载。

goroutine的启动

将要并发执行的任务包装成一个函数,调用函数的时候前面加上go关键字,就能够开启一个goroutine去执行该函数的任务,goroutine对应的函数执行完,该goroutine就结束了;

程序启动的时候就会自动创建一个goroutine去执行main函数,main函数结束了,那么程序就结束了,由该程序启动的所有其他goroutine也都结束了。

goroutine的本质

1
2
goroutine的调度模型:GMP
m:n把m个goroutine分配给n个操作系统线程

goroutine与操作系统线程(OS线程)的区别

1
goroutine是用户态的线程,比内核态的线程更轻量级,初始时只占用2KB的栈空间,可以轻松开启数十万的goroutine也不会崩内存。

runtime.GOMAXPROCS

1
Go1.5之后默认就是操作系统的逻辑核心数,默认跑满cpu。例如:runtime.GOMAXPROCS(1) 表示只占用1

work pool模式

1
开启一定数量的goroutine去干活

sync.WaitGroup

1
var wg sync.WaitGroup
  • wg.Add(1):计数器+1
  • wg.Done():计数器-1
  • wg.Wait():等

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

分享到:
赞(1) 打赏

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:没有了,已经是最后文章

下一篇:

相关推荐

0 条评论关于"Go语言并发之goroutine"

最新评论

    暂无留言哦~~

博客简介

学海无涯,唯勤是舟 我是生活在中东的 一条咸鱼,这是我记录学习笔记的博客,目前在学习Devops Golang Vue。

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 69 篇
  • 草稿数目: 1 篇
  • 分类数目: 12 个
  • 独立页面: 2 个
  • 评论总数: 3 条
  • 链接总数: 4 个
  • 标签总数: 42 个
  • 注册用户: 1 人
  • 访问总量: 8,670,003 次
  • 最近更新: 2021年10月17日
服务热线:
 18888888889

 QQ在线交流

 旺旺在线