目录
1.进程与线程的区别?
进程是资源分配最小单位
,线程是程序执行
的最小单位;
CPU切换一个线程比切换进程花费小;
创建一个线程比进程开销小;
线程占用的资源要⽐进程少很多
线程进程的区别体现在4个方面:
第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间
,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”
,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高,
但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。
第二:体现在通信机制上面
,正因为进程
之间互不干扰,相互独立,进程的通信机制相对很复杂
,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程
由于共享数据段所以通信机制很方便
。
第三:体现在CPU系统上面
,线程使得CPU系统更加有效
,因为操作系统会保证当线程数不大于CPU
数目时,不同的线程运行于不同的CPU上。
第四:体现在程序结构上
,简明易懂的列子:当我们使用进程的时候
,我们不自主的使用if else嵌套来判断pid,使得程序结构繁琐,但是当我们使用线程的时候
,基本上可以甩掉它,当然程序内部执行功能单元需要使用的时候还是要使用,所以线程对程序结构的改善有很大帮助。