php扩展ext-fiber的执行流程

amphp 一直在推动的php扩展fiber,最近在讨论集成到php的官方内核中。

这样php就有多了一个异步操作的解决方案。

一直以来php在异步并发处理做出一些努力。就拭目以待ext-fiber能够给php带来什么。

看了一下php扩展ext-fiber的执行流程:

QQ截图20210315171507.jpg

fiber 大概就是实现了一种主执行流程和fiber执行流程的手动切换。

fiber->start() 从main流程切换到fiber流程执行

Fiber::suspend() 从fiber切换到main流程

接下来main流程可以执行一些操作,或者顶一个事件循环监听socket的数据情况

当有数据写入事件后,调用Fiber->resume 切换到fiber中去执行比如从socket 读取数据这样的操作

fiber的流程代码执行完毕以后,也就自动切换到主流程,如果事件循环也结束了,那么就主流程继续向下执行。

总的来说 fiber 的执行流程,还是很简练清晰的。