线程概念
a.程序当中的一个执行路线
b.进程当中的一个控制序列
c.一个进程至少有一个执行线程
Linux中的线程是通过进程模拟实现线程的,没有真正意义的线程
Linux中的进程称为轻量级进程,至少有一个执行线程
进程与线程
进程是承担分配系统资源的基本单位实体;
线程是调度的基本单元,程序执行的最小单位。
进程之间数据独立;
线程共享进程资源,独自拥有自己的上下文数据和私有栈结构。
一个进程的地址空间被多个线程共享,共享文件描述符,信号处理方式,当前目录,用户id和组id。
进程有一个进程控制块(PCB) 线程也有一个线程控制块(TCB)
线程优点(和进程相比)
1.创建更加简单,所需要的系统资源更少;
2.线程的相互切换更加容易,相较于进程的切换,线程切换不用切换页表;
3.占用资源少(比进程少了虚拟地址空间、页表等等…)
4.能充分利用多处理器的可并行数量
5.计算密集型应用(一直调用CPU计算数据):为了在多处理器系统上运行,一般采用多线程方式,将计算分解到多个线程中实现
6.I/O密集型应用(一直调用I/O资源):为提高性能,将I/O操作重叠,让线程来同时等待不同的I/O操作。
线程缺点(和进程相比)
1.对于计算密集型线程,会造成性能缺失(增加额外的同步和调度开销)
2.健壮性降低:一个线程出现异常会影响其他线程的运行。
3.缺乏访问控制:进程是访问控制的基本粒度
4.代码复杂度更高,更难编写代码
多线程进程图示:
都是硬知识,干货。。。
了解即可。。