1:进程
定义:是程序在计算机上的一次执行活动。Windows系统利用进程把工作划分为多个独立的区域,每个应用程序实例对应一个进程。它包含着一个运行程序所需要的资源。
进程是操作系统分配和使用系统资源的基本单位。
简单来说就是一个启动程序。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。
2:线程 命名空间:using System.Threading
定义:进程的一个实体(线程本质上是进程中一段并发运行的代码),执行线程、体现程序的真实执行情况,是处理器上系统独立调度和时间分配的最基本的执行单元。同一进程的所有线程共享相同的资源和内存(共享代码,全局变量,环境字符串等),使得线程间上下文切换更快、可以在同一地址空间内访问内存。当 C# 程序开始执行时,主线程自动创建。使用 Thread 类创建的线程被主线程的子线程调用。
相当于启动程序里面具体的操作。一个进程可以有多个线程、一个线程必须有一个父进程,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
线程生命周期开始于 System.Threading.Thread 类的对象被创建时,结束于线程被终止或完成执行时
进程中第一个被执行的线程称为主线程。
比如说windows 有听歌软件有写字软件 (听歌软件和写字软件)这是两个进程,在打开听歌软件的时候你可以听着歌再搜索歌曲(播放歌曲搜索歌曲)这就是两个线程
3:多线程
优点:多线程可以提高CPU的利用率,因为当一个线程处于等待状态的时候,CPU会去执行另外的线程
提高了CPU的利用率,就可以直接提高程序的整体执行速度
可以同时完成多个任务;
可以使程序的响应速度更快;
可以让占用大量处理时间的任务或当前没有进行处理的任务定期将处理时间让给别的任务;
可以随时停止任务;可以设置每个任务的优先级以优化程序性能。
缺点:线程开的越多,内存占用越大
协调和管理代码的难度加大,需要CPU时间跟踪线程
线程之间对资源的共享可能会产生可不遇知的问题
线程也是程序,所以线程需要占用内存,线程越多,占用内存也越多
多线程需要协调和管理,所以需要占用CPU时间以便跟踪线程
线程之间对共享资源的访问会相互影响,必须解决争用共享资源的问题
线程太多会导致控制太复杂,最终可能造成很多程序缺陷
4:协程
协程(coroutine)也是一种程序组件
子例程是某个主程序的一部分代码,该代码执行特定的任务并且与主程序中的其他代码相对独立
子例程又被称为子程序、过程、方法、函数
协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用一个程序可以包含多个协程,可以对比与一个进程包含多个线程
多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制
协程和线程区别:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力。
协成不是线程但是是主线程开启的所以协成里面是可以改变外部对象,比如说改变GameObject的显示和隐藏。但是线程是不能这么操作的会报错提示只有在主线程才能操作。 所以在协成里面开一个while(true) 会卡死主线程