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

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

阅读 13.4k
2 个回答

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

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

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

1 篇内容引用
推荐问题
宣传栏