什么是多线程 多线程详细介绍
2022-10-10 10:22:25 阅读(193)
相信很多没有接触计算机的人员都不知道多线程这一块的相关内容,很多人对这一个概念都不知道,下面小编就 给大家来详细介绍一下什么是多线程 多线程详细介绍这一块的相关内容,希望能帮助到大家。
什么是多线程
线程概念
线程:线程是进程中的一条执行流
以前我们学习进程的时候,我们说进程就是一个pcb,是程序动态运行的描述,通过pcb可以实现操作系统对程序运行的调度管理。
在最早时候,进程是一个pcb,操作系统通过pcb实现程序的运行调度管理;然而学习多线程,因为线程是进程中的一条执行流,linux下通过pcb实现的,因此linux下的pcb实际上是一个进程,并且这些pcb共用同一个虚拟地址空间,这些pcb更加轻量化,因此linux下的线程也被称为轻量级进程
线程和进程关系
linux下的进程其实是一个线程组,一个进程中可以有多个线程(多个pcb),线程是进程中的一条执行流,类似于进程就是一个工厂,线程就是工厂中干活的人(Linux下干活的就是pcb)
在linux中,pcb就是调度程序运行的描述,一个pcb就可以调度一段程序的运行;
线程是进程中的一条执行流,而这个执行流Linux下就是通过pcb实现的,因此线程是一个pcb;并且这些pcb共享了进程中的大部分资源,因此相较于传统pcb更加轻量化。
进程:是一个程序动态的运行,其实就是一个程序运行的描述-pcb
线程:是进程中的一条执行流,执行一个程序中的某段代码
在linux操作系统内核中,其实没有线程的概念,只有轻量级进程的概念
一个进程中至少会有一个线程
根据学习阶段的不同,对pcb有不同的理解
第一阶段:pcb是进程,用于调度一个程序运行;
第二阶段:pcb是线程,是轻量级进程(就是为了跟印象中的传统进程加以区分),因为线程是运行中程序的一条执行流,linux下通过pcb实现这个执行流,并且共用同一份运行资源
进程是操作系统资源分配的基本单位(操作系统会为一个程序的运行分配所需的所有资源)
线程是cpu调度的基本单位;
线程之间的独有与共享
独有:标识符,寄存器,栈,信号屏蔽字,errno
共享:虚拟地址空间(代码段/数据段),文件描述符表,信号处理方式,用户ID/组ID/工作路径
为什么信号是先注销,再处理?:信号是针对整个进程通知时间进行处理的,但是一个信号只需要被处理一次就够了,然而一个进程有可能会有多个执行流,到底是谁处理这个事件(谁拿到时间片,谁能处理谁处理),有的线程不希望操作被信号被打断,就可以独立屏蔽这个信号----信号屏蔽字独有原因
使用vfork创建一个子进程;父子进程共用同一个虚拟地址空间,但是父进程会阻塞直到子进程exit或者程序替换;
多线程,多个pcb作为独立执行流肯定是要同时运行,如何做到不会调用栈混乱----栈独有的原因
errno:系统调用完毕后重置的一个全局变量
多线程/多进程进行多任务处理的优缺点分析
多线程优点:
线程间的通信更加灵活方便
线程的创建与销毁成本更低
同一个进程中的线程间调度成本更低
多进程的优点:
多进程的健壮性,稳定性更高(异常以及一些系统调用exit直接针对整个进程有效)
共同的优点:提高程序中的处理效率
IO密集型程序
CPU密集型程序
上面就是关于什么是多线程 多线程详细介绍的全部内容介绍,希望上面的内容能帮助到大家,上面的这些介绍还是能给大家普及这一块的相关知识。
未经允许不得转载,或转载时需注明出处- 本文关键词:
- 电脑软件