go协程和线程的区别

minwell · · 220 次点击 · · 开始浏览    
线程需要内核进程调度,有CPU时间片的概念,进行抢占式调度。 协程跟子程序执行类似,但是和子程序相比,协程有挂起的概念,协程可以挂起跳转执行其他协程,合适的时机再跳转回来。 相比其他语言,golang采用了MPG模型管理协程,更加高效,但是管理非常复杂。 M:内核级线程 G:代表一个goroutine P:Processor,处理器,用来管理和执行goroutine的。P的个数取决于设置的GOMAXPROCS,go新版本默认使用最大内核数。 单核场景:P绑定了M之后,P执行(Local Run Queue)"本地运行队列"中的Go Routine,P绑定了M之后,其他的M则处于休眠状态。

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

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

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