go基础之多协程开发

go语言生态学习

第五天:go多协程开发学习



前言

go以协程实现了并发操作,协程又叫goroutine,是一个比线程更小的运行单位,只在用户态下运行,通信方式为channel。go项目在1.11版本之后均开始使用go mod方式管理项目模块和不同模块之间的调用。


一、协程goroutine

1.协程运行模型


如图为协程的运行模型,一个内核态线程运行占用一个处理器,当存在线程运行时,处理器忙碌。协程运行在用户态,通过协程调度处理器来决定协程运行在局部队列还是全局队列,局部队列的协程按照抢占式策略运行在一个内核态线程上,全局队列的协程在有处理器空闲或者局部协程队列有空闲时加入运行队列。因而协程和线程之间是M:N模型,一个协程可以同时运行在多个线程上,一个线程可以绑定多个协程来运行,他们之间通过一个调度处理器来形成绑定运行的关系。

2.协程使用方法

首先明确主协程和子协程的概念,只有main函数启动的协程为主协程,所有go关键字启动运行的函数为子协程,当主协程退出运行时

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值