首页 常识

线程什么意思(多线程——线程概念)

2024-10-07 11:15:37    100 次阅读


  • 前言
  • 线程概念
    • 线程和进程关系
    • 根据学习阶段的不同,对pcb有不同的理解
    • 线程之间的独有与共享
    • 多线程/多进程进行多任务处理的优缺点分析

前言

多线程:非常重要----以后工作中用得非常多
多线程-----线程概念/线程控制/线程安全/线程基本应用

线程概念

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

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

网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 秒搜百科 琼ICP备2024039176号-26