page contents

PHP协程是什么

PHP协程就相当于线程,就是在切换线程上下文时,首先要保存上一个线程的上下文,然后再执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文,协程也是这样,只不过协程是由用户调度的,而线程是系统调度的........

attachments-2021-08-1wgariT461079f4ed0941.png

PHP协程就相当于线程,就是在切换线程上下文时,首先要保存上一个线程的上下文,然后再执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文,协程也是这样,只不过协程是由用户调度的,而线程是系统调度的。

 

PHP 协程用法

协程的支持是在迭代生成器的基础上, 增加了可以回送数据给生成器的功能(调用者发送数据给被调用的生成器函数). 这就把生成器到调用者的单向通信转变为两者之间的双向通信。

 

PHP 协程入的特点

l  协同,因为是由程序员自己写的调度策略,其通过协作而不是抢占来进行切换

l  在用户态完成创建,切换和销毁

l  从编程角度上看,协程的思想本质上就是控制流的主动让出(yield)和恢复(resume)机制

l  迭代器经常用来实现协程

 

 

PHP实现协程

 

可迭代对象

PHP5提供了一种定义对象的方法使其可以通过单元列表来遍历,例如用foreach语句。

你如果要实现一个可迭代对象,你就要实现Iterator接口。

生成器

可以说之前为了拥有一个能够被foreach遍历的对象,你不得不去实现一堆的方法,yield关键字就是为了简化这个过程。

生成器提供了一种更容易的方法来实现简单的对象迭代,相比较定义类实现Iterator接口的方式,性能开销和复杂性大大降低。(注意:一个函数中如果用了yield,它就是一个生成器,直接调用它是没有用的,不能等同于一个函数那样去执行)

 

以上就是有关PHP协程是什么的相关内容了,想要了解更多有关php的其它知识也可关注六星社区网站。

  • 发表于 2021-08-02 15:33
  • 阅读 ( 689 )
  • 分类:PHP开发

0 条评论

请先 登录 后评论
小柒
小柒

1474 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章