线程【一】线程优缺点,资源情况,线程异常,线程ID,线程控制

【前言】

进程是独占系统资源的,进程与进程之间是互相独立的,彼此之间是竞争关系。

进程的独立性:进程的地址空间。

共享:共享内存,共享库(动态库)

比进程更轻量化,在进程内部运行的执行流称之为线程,

Linux下的进程,也叫做轻量级进程,CPu在调度的时候,只看PCB,是进程的,也可能是线程的。

Linux不知道什么进程线程,它看到的都是轻量级进程

线程是轻量级进程(把线程形容的粗了),进程是轻量级进程(把进程形容的细了)

内部只有一个线程的进程

线程在进程内部运行,多个线程在进程的地址空间运行

Linux下的线程使用PCB模拟的,Linux下没有真正意义上的线程,只有进程模拟的。工作量更小,

进程是承担分配系统资源的实体

线程是调度的基本单位

开辟进程:创建PCB,地址空间,页表,开辟内存,加载数据,建立映射关系,资源分配好。

开辟线程:在进程地址空间中多了一个PCB,把进程已有的资源分配给它。

一个进程内部包含了多个执行流,包括了多个资源,线程是进程内部的一个执行流。

进程多数资源是私有的,但是也有共享的。线程多数资源是共享的,但是也有共享的。

页表:深入理解计算机操作系统

.hpp函数既有声明,又有实现

.h一般只有声明

保护临界资源的手段:同步和互斥

线程概念

线程,有时也被称为轻量级进程,是程序执行流的最小单位,线程在进程内部运行,本质上是在进程地址空间内运行。线程是进程中的一个实体,是被系统独立调度和分配的最小单位。线程也有就绪阻塞运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

线程优点

  1. 线程的创建删除的代价比进程小得多
  2. 线程之间的切换比进程之间的切换更加简单,操作系统需要做的工作更少,线程的调度成本少很多。切换进程:①进程上下文,②进程页表,③进程地址空间。线程间的切换:只切换上下文
  3. 线程占用的资源比进程少
  4. 能充分利用多处理器的可并行数量
  5. 等待慢速I/O结束时,程序可执行其他的计算任务,例如下载电影时的边下边播
  6. 计算密集型应用,代码或者逻辑以计算为主,加密、解密,将计算分解到多个线程处理
  7. I/O密集型应用,读写文件、访问数据库,线程可以同时等待不同的I/O操作

catch:存在于CPU和内存之间,CPU内部有寄存器,在寄存器更加靠外一点有catch,硬件层面上的快速缓存,把内存里的数据catch到catch里。进程切换还要切换catch,线程不需要。正在执行的某行代码,会把这行代码附近的内容都放到catch中,cpu执行后续代码就不需要到内存中去了,提高效率。

线程缺点

  1. 性能损失,增加了额外的同步和调度开销
  2. 健壮性降低,一个线程出错,其他所有线程都跟着遭殃。线程之间是缺乏保护的
  3. 缺乏访问控制,线程能访问这个进程的全体资源&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值