Unity 初期总结 - 协程(个人总结,仅供参考) - Go语言中文社区

Unity 初期总结 - 协程(个人总结,仅供参考)


协程并不属于多线程,它属于单线程,但却能达到与多线程一样的效果。

也正是因为协程是单线程,那它其实并不存在上下文的切换,资源竞争,以及互斥锁的问题。占用的空间也会相对少很多。

它是如何实现的?

对于一般的方法而言,只有一个入口。而对于协程来说,它具有多个入口,通过yield return来指定下一个入口的位置,并退出当前的协程。协程所在的这个线程执行到这个入口的时候,又会接着执行协程中的内容,如果又遇到yield return就又指定新的入口......直至协程执行完毕。

相当于协程把本来应该一次解决的任务,通过yield return拆分成了多次来完成,从而达到了一种类似于多线程的效果。

但协程实际上也是有缺点的,由于他是单线程,因此它极有可能会阻塞掉它所在的这个线程。并且对于多核CPU而言,协程的效率肯定是远不如多线程的。


版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/7c6a4bfd5200
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:04:10
  • 阅读 ( 961 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢