zoukankan      html  css  js  c++  java
  • 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函数会对整个进程造成影响;

  • 相关阅读:
    iOS block从零开始
    iOS 简单动画 序列帧动画
    iOS 简单动画 block动画
    IOS 简单动画 首尾式动画
    IOS 手势详解
    IOS block 循环引用的解决
    IOS GCD定时器
    IOS TextField伴随键盘移动
    IOS RunLoop面试题
    IOS RunLoop 常驻线程的实现
  • 原文地址:https://www.cnblogs.com/bj3251101/p/11466436.html
Copyright © 2011-2022 走看看