协程知识记载

线程是cpu最小的调度单位

协程又称为用户态线程,为什么叫用户态线程呢,因为协程是用户可以调度的线程,而线程是cpu调度的,所以协程cpu是无感知的其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。协程是进程的补充,或者是互补关系。

要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。内核态的线程是由操作系统来进行调度的,在切换线程上下文时,要先保存上一个线程的上下文,然后执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文。

协程也是如此,只不过,用户态的线程不是由操作系统来调度的,而是由程序员来调度的,就是所谓的用户态的线程。

Swoole 可以为每一个请求创建对应的协程,根据 IO 的状态来合理的调度协程,线程和进程的调度是由操作系统来调控, 而协程的调度由用户自己调控。

协程调度器可以在协程 A 即将进入阻塞 IO 操作, 将该协程挂起,把当前的栈信息 StackA 保存下来,然后切换到协程 B,等到协程 A 的该 IO 操作返回时, 再根据 Stack A 切回到之前的协程 A 当时的状态。

协程相对于事件驱动是一种更先进的高并发解决方案,把复杂的逻辑和异步都封装在底层,让程序员在编程时感觉不到异步的存在。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值