社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
协程并不属于多线程,它属于单线程,但却能达到与多线程一样的效果。
也正是因为协程是单线程,那它其实并不存在上下文的切换,资源竞争,以及互斥锁的问题。占用的空间也会相对少很多。
对于一般的方法而言,只有一个入口。而对于协程来说,它具有多个入口,通过yield return来指定下一个入口的位置,并退出当前的协程。协程所在的这个线程执行到这个入口的时候,又会接着执行协程中的内容,如果又遇到yield return就又指定新的入口......直至协程执行完毕。
相当于协程把本来应该一次解决的任务,通过yield return拆分成了多次来完成,从而达到了一种类似于多线程的效果。
但协程实际上也是有缺点的,由于他是单线程,因此它极有可能会阻塞掉它所在的这个线程。并且对于多核CPU而言,协程的效率肯定是远不如多线程的。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!