服务热线:400-0033-166
万商云集 - 企业数字化选用平台

企业首选的

数字选用平台

什么是多线程 多线程详细介绍

2022-10-10 10:22:25 阅读(193 评论(0)

 相信很多没有接触计算机的人员都不知道多线程这一块的相关内容,很多人对这一个概念都不知道,下面小编就 给大家来详细介绍一下什么是多线程   多线程详细介绍这一块的相关内容,希望能帮助到大家。


什么是多线程


  线程概念

  线程:线程是进程中的一条执行流

  以前我们学习进程的时候,我们说进程就是一个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密集型程序


上面就是关于什么是多线程   多线程详细介绍的全部内容介绍,希望上面的内容能帮助到大家,上面的这些介绍还是能给大家普及这一块的相关知识。

未经允许不得转载,或转载时需注明出处