当前位置:首页 » 《随便一记》 » 正文

进程 线程 协程(Unity)_不会三刀流的索隆的博客

20 人参与  2021年11月20日 10:23  分类 : 《随便一记》  评论

点击全文阅读


进程 线程 协程

什么是进程?

直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。

进程拥有代码和打开的文件资源、数据资源、独立的内存空间。

什么是线程?

进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。

与进程不同的是同类的多个线程共享进程的方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程

线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。

线程拥有自己的栈空间。

总结:

对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。

img
(图源自网络)

什么是协程

**协程,英文Coroutines,是一种比线程更加轻量级的存在。**正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。

通常情况下线程运行遇到阻塞,CPU在当前函数的计算之外是停止的,这样会有大量资源浪费,因此出现了协程,一条线程中有多个任务在交替进行,其中的一个任务就是一个协程

例如,在一条线程中,两个任务在同一个时间轴交替运行,但对外来讲仍然是一条线程,因为切换的速度非常快,好像在做一件事情一样,其实系统在做好多事情

img
(图源自网络)

多进程和多线程区别

多进程:操作系统中同时运行的多个程序

多线程:在同一个进程中同时运行的多个任务

举个例子,多线程下载软件,可以同时运行多个线程,但是通过程序运行的结果发现,每一次结果都不一致。 因为多线程存在一个特性:随机性。造成的原因:CPU在瞬间不断切换去处理各个线程而导致的,可以理解成多个线程在抢CPU资源。

多线程

多线程并不能提高运行速度,但可以提高运行效率,让CPU的使用率更高。但是如果多线程有安全问题或出现频繁的上下文切换时,运算速度可能反而更低。

而且线程在运行的时候会出现阻塞的情况,极大的浪费了CPU的资源,这时,使用协程分开使用空间,会极大提高CPU利用率

Unity 协程

协程的英文是Coroutine

一个协程是通过一个方法来定使用,因此在使用协程之前要写一个带有IEnumerator类的返回值的方法

Unity协程应注意的点

  1. 协程所在脚本关闭的时候协程不会停止,但是协程所在的游戏对象删除的时候协程将会被系统回收
  2. 关于协程的关闭,下面会详解
  3. 协程的返回值必须是IEnumerator
  4. 协程的内部必须要有yield return来暂停协程使用
  5. 协程可以重载
  6. 协程可以多次调用,但是不可以关闭后继续运行,只能重新开启协程
  7. 协程可以嵌套
  8. 协程的参数不能使用 ref 和 out 修饰
  9. 协程在执行完内部所有代码的时候会退出协程

关于协程yield return 后面的值

  1. yiled return 0; 0可以换成任意的int类型的值,都是当前暂停一帧,从下一帧开始执行
  2. yiled return 协程,yiled return 后面可以跟一个协程,当执行到该行代码的时候执行yiled return 后面的协程,如果下面还有代码在执行完该协程的时候,回来继续执行.
  3. yiled return 后面可以跟一个WWW类,当下载完成该WWW类的时候,继续向下面的代码执行
  4. yiled return new WaitForSeconds(时间),时间可以随意设置,该方法主要作用是等待几秒钟后执行yiled return 后面的代码;
  5. yiled return 后面可以跟一个类,等等根据自己的需要进行使用

开启协程和关闭协程

  1. 直接使用协程方法名

    开启协程 StartCoroutine(“协程方法名 “);

    关闭协程 StopCoroutine(“协程方法名 “);

  2. 使用协程方法名加参数

    开启协程 StartCoroutine(“协程方法名”,参数);<该方法只适用于协程只有一个参数的时候>

    关闭协程 StopCoroutine(“协程方法名”);

  3. 使用方法

    开启协程 StartCoroutine(协程方法名(参数));<该方法中的参数个数随意

    关闭协程 StopCoroutine(协程方法名(参数));<该方法不能关闭该协程,但是开启可以使用>


点击全文阅读


本文链接:http://zhangshiyu.com/post/31063.html

线程  进程  多个  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1