进程和线程的区别是什么,进程和线程的区别( 二 )


文章插图
文章插图
2、线程和进程的区别根本区别:进程是资源分配最小单位 , 线程是程序执行的最小单位 。计算机在执行程序时 , 会为程序创建相应的进程 , 进行资源分配时,是以进程为单位进行相应的分配 。每个进程都有相应的线程,在执行程序时,实际上是执行相应的一系列线程 。
地址空间:进程有自己独立的地址空间,每启动一个进程,系统都会为其分配地址空间,建立数据表来维护代码段、堆栈段和数据段;线程没有独立的地址空间,同一进程的线程共享本进程的地址空间 。
资源拥有:进程之间的资源是独立的;同一进程内的线程共享本进程的资源 。
执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口 。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 。
线程是处理机调度的基本单位 , 但是进程不是 。由于程序执行的过程其实是执行具体的线程,那么处理机处理的也是程序相应的线程,所以处理机调度的基本单位是线程 。
系统开销:进程执行开销大,线程执行开销小 。

进程和线程的区别是什么,进程和线程的区别

文章插图
文章插图
3、线程和进程的区别从字面上看,协程与线程、进程较为相似 , 对于拥有其它开发语言基础的同学容易造成困扰,以至于第一印象把协程理解成线程 。
线程是操作系统能够进行运算调度的最小单位,分配算力、执行调度以线程为单位 。一条线程指就是一个单一顺序的控制流 。
进程是正在运行的程序的实例,是线程集合的载体,同时也是操作系统分配资源的基本单位 。
线程和进程的关系 , 打个比方,一个应用程序就是一个进程 。进程启动后,好比建立了一个工厂 , 线程是这个工厂中的“流水线” 。一个工厂内可以有多个流水线 , 这些流水线可以并发生产,一条流水线出问题不会影响其它流水线 。所以,进程可以有多个线程,但至少有一个主线程 。
线程间可以并发执行 , 并共享进程资源(都使用进程的空间) 。线程间有独立的栈区,但共享使用进程的堆区 。
Unity中不支持多线程开发,但是却有并发的需求,使用协程来模拟多线程开发,即可并发(模拟),又可控制同步、防止阻塞 。
协程是Unity机制,不具备系统普遍性,只能在MonoBehaviour下启动 。协程和线程的定义、启动流程类似,但其内部实现原理与线程不同 。
——————这里开始介绍协程—————————–
Unity的协程系统是基于C#的一个简单而强大的接口,简单讲就是可以把一个方法拆分成多次执行的一种接口 。协程通过yiled return返回一个迭代器,记录程序执行的位置,之后进入阻塞状态 , 直到满足唤醒条件后,才会继续向下执行 。启动多个协程后,多个协程之间不会真正的并发,而通过快速轮询模拟并发效果 。
Unity在整个生命周期中构建了一个托管代码执行队列,通过生命周期管理器往这个队列中添加执行方法的委托 , 然后启动一个托管线程,这个线程中不断的循环获取队列中的方法委托并执行 。
当开启一个迭代器(IEnumerator)后,协同程序便开始执行 , 在执行到yield return 之前和一般的程序没有任何区别 , 遇到yield return 之后立即返回 , 并将之后的代码挂起 。之后判断yield return后边的条件是否满足 , 如果满足,向下继续执行,否则继续等待 。

经验总结扩展阅读