• Linux下线程学习_线程的认识


    一、线程的认识

      1、线程:Linux下线程是一个轻量级进程,以进程pcb模拟实现,pcb是控制一个程序运行的描述,并且与这些pcb

            共用同一个虚拟地址空间,共享进程中的大部分资源,所以相较于传统进程更加轻量化;

      2、线程的独有与共享

      进程是操作系统资源分配的基本单位:程序运行起来后系统分配的资源是给整个进程组的;

      线程是CPU调度的基本单位:CPU通过调度pcb实现程序的调度;

        独有:为了避免线程之间调用栈混乱,每个线程都有自己的栈区、寄存器、线程id、调度优先级、errno、信号屏蔽字;

        共享:虚拟地址空间(代码段—数据段)、文件描述符表、信号处理方式、用户id和组id、当前工作路径/目录

      3、线程异常

        1>单个线程如果出现除零、野指针问题导致线程崩溃,随之也会导致进程崩溃;

        2>线程是进程的执行分支,线程出现异常,进程就会出现异常;

      4、线程的用途

        1>合理利用可以提高CPU密集型程序的执行效率;

        2>合理利用可以提高I/O密集型程序的用户体验;

      5、线程的优点

        1>创建一个线程远比创建一个进程代价小得多;

        2>与进程的切换相比,线程之间的切换所需操作系统的工作量很少;

        3>线程占用资源比进程少;

        4>能充分利用多处理器的可并行数量;

        5>计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现;

        6>I/O密集型应用,为了提高性能,将I/O操作重叠。线程同时可以等待不同的IO操作;

      6、线程的缺点

        1>性能损失:如果有大量线程,它的创建、切换、销毁都会增加额外的同步和调度开销,

              且可用的资源是不变的,所以会有较大性能损失;

        2>健壮性低:线程与线程之间缺乏保护;

        3>缺乏控制访问:进程是访问控制的基本粒度,在一个线程中调用某些OS函数会对整个进程造成影响;

  • 相关阅读:
    你的服务器和网站为什么会被反复入侵
    MAC 查看当前安装的JDK位置
    Jmeter高并发测试
    解密AndroidManifest.xml、AXMLPrinter2.jar源码下载
    Win10家庭版如何启用本地组策略
    SQLFlow使用中的注意事项--设置篇
    Sqlflow 之隐私政策(Privacy plolicy)介绍
    血缘关系分析工具SQLFLOW--实践指南
    Oracle SQL 性能优化利器
    SQLFlow数据流分析工具的job功能介绍
  • 原文地址:https://www.cnblogs.com/bj3251101/p/11466436.html
Copyright © 2020-2023  润新知