搜索

首页  >  问答  >  正文

php - 协程是什么?有什么应用场景

如何理解协程,协程有什么应用场景
从鸟哥这看几个例子,我的理解是在函数使用yield,就会在那产生中断点,下次使用这个函数时就会从这个中断点开始运行,不过不知道我的理解对不对。。还有应用场景不知道是怎样的

给我你的怀抱给我你的怀抱2797 天前797

全部回复(2)我来回复

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:12:47

    进程、线程和协程的理解

    回复
    0
  • 黄舟

    黄舟2017-05-16 13:12:47

    关于协程,你可能看的最多的就是这样一句话“协程就是用户态的线程”.

    要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。 内核态的线程是由操作系统来进行调度的,在切换线程上下文时,要先保存上一个线程的上下文,然后执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文。 协程也是如此,只不过,用户态的线程不是由操作系统来调度的,而是由程序员来调度的,是在用户态的。

    yield这个关键字就是用来产生中断, 并保存当前的上下文的, 比如说程序的一段代码是访问远程服务器,那这个时候CPU就是空闲的,就用yield让出CPU,接着执行下一段的代码,如果下一段代码还是访问除CPU以外的其它资源,还可以调用yield让出CPU. 继续往下执行,这样就可以用同步的方式写异步的代码了.

    回复
    0
  • 取消回复