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函数会对整个进程造成影响;

posted @ 2019-09-17 18:55  冲锋的蜗牛  阅读(200)  评论(0编辑  收藏  举报