PHP协程就相当于线程,就是在切换线程上下文时,首先要保存上一个线程的上下文,然后再执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文,协程也是这样,只不过协程是由用户调度的,而线程是系统调度的。
PHP 协程用法
协程的支持是在迭代生成器的基础上, 增加了可以回送数据给生成器的功能(调用者发送数据给被调用的生成器函数). 这就把生成器到调用者的单向通信转变为两者之间的双向通信。
PHP 协程入的特点
l 协同,因为是由程序员自己写的调度策略,其通过协作而不是抢占来进行切换
l 在用户态完成创建,切换和销毁
l 从编程角度上看,协程的思想本质上就是控制流的主动让出(yield)和恢复(resume)机制
l 迭代器经常用来实现协程
PHP实现协程
可迭代对象
PHP5提供了一种定义对象的方法使其可以通过单元列表来遍历,例如用foreach语句。
你如果要实现一个可迭代对象,你就要实现Iterator接口。
生成器
可以说之前为了拥有一个能够被foreach遍历的对象,你不得不去实现一堆的方法,yield关键字就是为了简化这个过程。
生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。(注意:一个函数中如果用了yield,它就是一个生成器,直接调用它是没有用的,不能等同于一个函数那样去执行)
以上就是有关PHP协程是什么的相关内容了,想要了解更多有关php的其它知识也可关注六星社区网站。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!