线程与进程的区别归纳:
a.地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
b.通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
c.调度和切换:线程上下文切换比进程上下文切换要快得多。
d.在多线程OS中,进程不是一个可执行的实体。
进程是程序的一次动态执行过程,它对应了代码加载、代码执行到执行完毕的一个完整过程,作为蓝本的程序可以被多次加载到内存的不同区域,形成不同的进程。
线程是进程内部单一控制流,一个进程在执行过程中可以产生多个线程,每个线程也有自己产生、存在和消亡的过程,且进程中的每个线程都能够争用资源,且线程可以看成是进程当中独立的线索,会共享资源,所以需要保证线程并发性的安全。
根本区别:进程是操作系统资源分配的基本单位,线程是任务调度执行基本单位
运行环境:操作系统中可多进程(程序)运行,在同一个进程中可多线程同时执行(线程是CPU通过时间片调度)
内存分配:系统在运行的时候会为每个进程分配不同的内存空间,而系统只为线程分配CPU,不分配内存(线程所用资源来自所属进程的资源),线程组之间共享资源
开销方面:每个进程都有独立代码和数据空间(程序上下文),进程切换消耗资源过大。线程可以看成轻量级的线程,同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器PC,线程切换开销小。
包含关系:只有一个线程的进程可以看成单进程,一个进程若有多个线程,则多线程共同完成。
<p>进程是执行中的应用程序,线程是进程内部的一个执行序列,一个进程可以有多个线程,线程又叫做轻量级进程,区别在于进程之间相互独立,同一个进程中的多个线程共享进程中的资源,进程拥有的资源多,线程拥有的资源少,进程间切换代价大,线程间切换代价小。