fiber-ext.jpg

根据上图,可以看出来Fiber的大体执行流程,如下:

1、fiber 大概就是实现了一种主执行流程和fiber执行流程的手动切换。
2、fiber->start() 从main流程切换到fiber流程执行。
3、Fiber::suspend() 从fiber切换到main流程。
4、接下来main流程可以执行一些操作,或者顶一个事件循环监听socket的数据情况
5、当有数据写入事件后,调用Fiber->resume 切换到fiber中去执行比如从socket读取数据这样的操作。
6、fiber的流程代码执行完毕以后,也就自动切换到主流程,如果事件循环也结束了,那么就主流程继续向下执行。

转自:https://www.simapple.com/459.html