您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
协程有哪些好处?
线程,进程,进阶协程有哪些好处?
发布时间:2016-12-08加入收藏来源:互联网点击:
协程有哪些好处?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
从字面上看,协程与线程、进程较为相似,对于拥有其它开发语言基础的同学容易造成困扰,以至于第一印象把协程理解成线程。
线程是操作系统能够进行运算调度的最小单位,分配算力、执行调度以线程为单位。一条线程指就是一个单一顺序的控制流。
进程是正在运行的程序的实例,是线程集合的载体,同时也是操作系统分配资源的基本单位。
线程和进程的关系,打个比方,一个应用程序就是一个进程。进程启动后,好比建立了一个工厂,线程是这个工厂中的“流水线”。一个工厂内可以有多个流水线,这些流水线可以并发生产,一条流水线出问题不会影响其它流水线。所以,进程可以有多个线程,但至少有一个主线程。
线程间可以并发执行,并共享进程资源(都使用进程的空间)。线程间有独立的栈区,但共享使用进程的堆区。
Unity中不支持多线程开发,但是却有并发的需求,使用协程来模拟多线程开发,即可并发(模拟),又可控制同步、防止阻塞。
协程是Unity机制,不具备系统普遍性,只能在MonoBehaviour下启动。 协程和线程的定义、启动流程类似,但其内部实现原理与线程不同。
------------------这里开始介绍协程-----------------------------
Unity的协程系统是基于C#的一个简单而强大的接口,简单讲就是可以把一个方法拆分成多次执行的一种接口。协程通过yiled return返回一个迭代器,记录程序执行的位置,之后进入阻塞状态,直到满足唤醒条件后,才会继续向下执行。启动多个协程后,多个协程之间不会真正的并发,而通过快速轮询模拟并发效果。
Unity在整个生命周期中构建了一个托管代码执行队列,通过生命周期管理器往这个队列中添加执行方法的委托,然后启动一个托管线程,这个线程中不断的循环获取队列中的方法委托并执行。
当开启一个迭代器(IEnumerator)后,协同程序便开始执行,在执行到yield return 之前和一般的程序没有任何区别,遇到yield return 之后立即返回,并将之后的代码挂起。之后判断yield return后边的条件是否满足,如果满足,向下继续执行,否则继续等待。
IEnumerator methodName(Object parameter1,Object parameter2,...){
// to do something
yield return Yield Instruction/other/null;
// to do something else
}
回答于 2019-09-11 08:43:50
首先协程极大的优化了程序员的编程体验,并易于复用且有异步的性能协程是轻量级线程, 协程的创建、切换、挂起、销毁全部为内存操作,消耗是非常低可以创建很多个协程来执行任务, 适合的是 IO 密集型 应用, 因为协程在 IO阻塞 时会自动调度, 减少IO阻塞导致的时间损失.作为世界上最好的语言PHP在IO密集处理方面一直被吐槽,但是有了Swoole就不一样了,Swoole最新版本有更为完整的协程编程支持, 直观的效果是更加无缝无感的编程切换体验, 意味着需要了解和注意的语法细节更少, 编程更轻松使得PHP程序员不需要学习例外一门语言、也可以用PHP+Swoole实现高并发、高可用、微服务架构,即时通信等,关键还省钱解约成本,能够让用户运行真正的协程异步PHP。在学习PHP的程序员,后期进阶中高级、架构师,Swoole协程编程、并发编程、Swoft微服务、SQL性能优化,分布式、高并发等技术都是成为一个中高级PHPer,架构师的必经之路,掌握这些比你做兼职的收入高好几倍了,为了帮助大家进阶中高级涨薪、
我为大家准备了一套精品福利!还可加入大牛学习圈子,分享tp,laravel,Swoole,Swoft微服务等教程,各种大牛都是3-8年PHP开发者,每天还有12年的架构师做讲解,助你进阶中高级PHP程序员,增值涨薪!需要可关注本头条号,并且发送私信:PHP
在学习Swoole协程编程、并发编程、进阶PHP中高级,架构师的路上有技术问题的可在底部留言,探讨技术!!
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |