看了上面的链接还不了解协程的可以往下看。
最简单的理解,可以将协程当成是一种看起来花里胡哨,并且使用起来也花里胡哨的函数。协程的本质就是被包装起来的函数和函数的运行状态,称为协程上下文。因为每个协程在创建时一定会指定一个入口函数,这点和线程完全一样。协程和函数的不同之处是,函数一旦被调用,只能从头开始执行,直到函数执行结束退出,而协程则可以执行到一半就退出(称为yield),但此时协程并未结束,它可以在后面适当的时机再重新被恢复(称为resume),在这段时间间隔内可以运行其他的协程,所以协程也被称为用户态线程。
简单来说,协程就是用户态线程。从使用上来说,协程和线程确实有许多相似的地方,比如,协程和线程都有自己的入口函数和执行栈,线程之间可以切换执行,协程之间也可以切换执行。但是,线程和协程是有本质区分的。
协程切换最重要的就是协程上下文,它代表了函数的执行状态。
协程原语
ucontext_t接口
sylar协程模块设计
非对称协程。
...
...
协程关键:
1. 协程虽然被称为轻量级线程,但在同一个线程内,协程并不能并发执行,而是只能按顺序执行。其实这点也好理解,毕竟协程其实就是以一种花里胡哨的方式调用子函数,不管实现得如何巧妙,也不可能在单线程里做到同时运行两个子函数,否则还要多线程有何用?
...