前言
本文主要给大家介绍了关于PHP中协程和阻塞的理解与思考,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:
进程、线程、协程
关于进程、线程、协程,有非常详细和丰富的博客或者学习资源,我不在此做赘述,我大致在此介绍一下这几个东西。
进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。
线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。
协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。
PHP中的协程实现基础 yield
yield的根本实现是生成器类,而迭代器类是迭代器接口的实现:
Generator implements Iterator {
public mixed current ( void ) // 返回当前产生的值
public mixed key ( void ) // 返回当前产生的键
public void next ( void ) // 生成器继续执行
public void rewind ( void ) // 重置迭代器,如果迭代已经开始了,这里会抛出一个异常。
// renwind的执行将会导致第一个yield被执行, 并且忽略了他的返回值.
public mixed send ( mixed $value ) // 向生成器中传入一个值,并且当做 yield 表达式的结果,然后继续执行生成器。如果当这个方法被调用时,生成器
// 不在 yield 表达式,那么在