协程

协程(coroutine)

一、定义

​ 协程是由Melvin Conway于1958年首次提出,这个概念主要是针对线程和进程上的差别进行区别的(进程:操作系统管理单元,线程:代码执行控制单元),由于进程和线程都由操作系统进行控制管理,所以进程和线程上下文切换就需要进行操作系统权限切换相对代价比较高,协程就是在这样的一个理念上提出的,他们的一个关系属于一对多的关系(process->threads->corotines)。

二、协程原理

​ 协程上下文切换主要是在用户层进行,并且由用户自己进行执行流的控制,协程按照执行控制流可以分为:

类型描述
对称型协程上下文可以任意的切换,无需通过中间人进行切换
非对称型协程的上下文切换必须经过中间人才能切换

​ 按照协程是否有自有堆栈,可以分为有栈协程和无栈协程(用系统栈存储切换上下文),无栈协程相对有栈协程操作上灵活性会有一定牺牲。

三、协程使用

  1. 协程使用可以用boost coroutine;

  2. 协程IO库使用可以用wechart;

  3. 协程实现原理基础库;

    个人认为协程主要是应用多任务切换以及相互间依赖关系密切的应用场景,这样通过协程操作可以让一致性的操作压缩到一个线程内,避免加锁的开销类似于流水线模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值