协程

定义
协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。
一个程序可以包含多个协程,可以对比与一个进程包含多个线程,因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。
协程的特点:
与线程有几点不同
1 线程调度由内核完成,而协程完全处于用户态
2 线程拥有自己的线程资源和执行栈,各线程互不干扰,而协程则更像一个函数,主要通过保存函数栈和恢复函数栈来实现。

几种实现方式
1 coroutine(云风)
该方式基于ucontext实现,特点是非常简洁易用。
2 colib
colib最大的特点是hook了socket族函数,如果原先是阻塞式,会自动改为非阻塞式执行,在用户侧基本无感知。(个人认为hiredis的那些同步接口也可以如此实现)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值