Linux多线程学习------01

本文介绍了Linux系统中线程的相关知识。线程运行在进程中,是调度基本单位。创建线程开销小、切换工作少、占用资源少,适用于不同类型应用。但也存在健壮性降低、编程调试难、性能降低和缺乏访问控制等缺点。此外,进程的多个线程共享同一虚拟地址空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是线程

进程: 资源的管理(管理内存,管理打开的文件等。。。)
线程: 线程是运行在进程之中的,一个进程包含若干线程,和进程相似,也是抢先式的调度(Linux也把线程叫做轻量级进程LWP)
ps:进程是资源分配的基本单位,线程是调度的基本单位

2.线程的优点

  • 创建一个线程要比创建一个进程的开销小的多(线程之间共用一个虚拟地址空间)
  • 线程之间切换比进程之间切换的工作要少的多
  • 线程占用的资源要比进程少的多
  • cpu密集型应用,为了在多个cpu上运行,将计算分解到多个进程中实现
  • I/O密集型应用,为了提高性能,将I/O操做重叠,线程可以同时等待不同的I/O操作

3.线程的缺点

  • 健壮性降低:一个线程异常终止会导致整个进程异常终止,线程是进程的执行分支,线程出现异常,类似进程出现异常,触发信号机制,终止进程,该进程内的所有线程随机退出。
  • 编程/调试难度大
    a)对线程的可靠性要求更高
    b)线程安全问题
  • 性能降低:一个很少被外部事件阻塞的计算密集型线程往往无法与共它线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多,那么可能会有较大的性能损失,这里的性能损失指的是增加了额外的同步和调度开销,而可用的资源不变。
  • 缺乏访问控制:进程是访问控制的基本粒度,在一个线程中调用某些OS函数会对整个进程造成影响。

4.进程的多个线程之间共享同一虚拟地址空间

a)线程之间共用的资源
  1. 虚拟地址空间
  2. 文件描述符表
b)线程之间共用的资源
  1. 栈(函数调用栈,局部变量)
  2. 上下文信息(cpu中的寄存器)
  3. errno(每个线程都有自己的errno)
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值