线程与进程
线程与进程
1. 进程定义:
一个具有一定功能的程序在一个数据集合上的一次动态执行过程。
2. 线程定义:
更小的独立运行的单位,是进程中的一条执行流程。
3. 进程和线程区别:
[1] 根本区别:进程是资源分配最小单位,线程是程序执行的最小单位
[2] 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,线程共享代码和数据空间,每个线程都有自己独立的运行栈(局部变量)和程序计数器(PC),线程之间切换的开销小。
[3] 包含关系:个线程只能属于一个进程,一个进程可以拥有多个线程。
[4] 线程之间通信更方便:线程共享全局变量,静态变量等数据,进程之间的通信需要以通信的方式(管道,文件,消息队列,信号量,共享内存,套接字)进行;(但多线程程序处理好同步与互斥是个难点)
[5] 安全:多进程程序更安全,生命力更强,一个进程死掉不会对另一个进程造成影响(源于有独立的地址空间),多线程程序更不易维护,一个线程死掉,整个进程就死掉了(因为共享地址空间);